grep
の出力を別のコマンドにパイプしてチェックしたいと思います。以前のquestionでは、PIPESTATUSが提案されましたが、今はすべての条件で完全に機能していないことがわかりました。 grep
(一致または不一致)の出力が何であっても、PIPESTATUS
は0を返します。パイプされたgrepの出力を確認する
スクリプトが
GF=`grep g09 $INP | cut -d ' ' -f2`
if [ ${PIPESTATUS[0]} = 1 ]; then
基本的に含まれ、入力ファイルのg09
のための最初のコマンドを検索します。それが存在しない場合、パイパースタットは1
でなければなりません。今、私はG09が含まれている入力ファイルのため、出力は0であり、それにはG09を持っていない入力のために、出力はまだ0
++ grep g09 tor.sh
++ cut -d ' ' -f2
+ GF=hashe.gjf
+ '[' 0 = 1 ']'
であることがわかり、bashスクリプトでset -x
を訴え
および
なぜですか?どうすれば修正できますか? PIPESTATUS以外のソリューションはありますか?
完全なコードを貼り付けてください。 – codeforester
'set -x'の出力からわかるように、入力ファイル' tor.sh'です。 2つの異なるディレクトリに2つの 'tor.sh'があります。完全なコードは大きいかもしれませんが、私は投稿を更新します – mahmood
バックティックは別のプロセスでコマンドを実行しています。これは環境変数があなたの呼び出しスクリプトで利用できなくなった理由です。 –