コマンドでテキストファイルを解析する際にコマンドが見つかりません:bashの - 私は別のコマンドで構成テキストファイルを持っている
set +e; false; echo $?
(false; echo foo); echo \ $?
for i in .; do (false; echo foo); echo \ 1:$?; done; echo \ 2:$?
のように。
set -e
を使用してbashの子プロセスでこれらのコマンドを全体としてテストしたい場合は、親のbashプロセスからエラーコードをチェックして、エラーで終了したかどうかを確認してください。私はより単純なコマンド(上記の最初のコマンドなど)を処理する方法についていません。私は運がなくて、いくつかのバリエーションを試してみた
mapfile file < "$dir"/errorData
bash -c "${file[0]}"
echo $?
戻り
bash: set +e: command not found
bash: false: command not found
bash: echo 127: command not found
:ここに私の最近の試みの一つです。 bash -c \'"${file[1]}"\'
を使用すると、コマンドが見つからないというエラーメッセージが表示され、上記の3つの文字列が1つの長い文字列に結合されます。もちろん、ファイルのコマンドを厳密な引用符で囲み、対話シェルのbash
に直接入力するだけで問題ありません。
編集:私はシェルがリファレンスマニュアルに違反しているように見える方法で自分のテキストを解析していることを見つけた人にとってはbash 4.4.12(1)
これらのエラーはBash v4.3.48で再現できません。すべてうまく動作します。 – randomir
(-c) "$ {file [0]}"を実行してもよろしいですか? "$ {file [0]}"? – yacc
@yacc -cを指定しないと、bashがファイルまたはディレクトリを要求しているため、コマンドが失敗します。 – LumpyGrads