この問題について助けてください。
私はgrep test file.txtを実行しており、値全体をキャプチャして印刷したいと思います。私はこれをやっています。
grep test file.txt
if [ "$?" -eq 0]
then
echo success
else
echo fail
fi
このコードでは、grep が値を返すかどうかにかかわらず、終了コードは 0 で、コマンドが成功したことを示します。
実際のコードでgrepを10回ほど繰り返しましたが、うまくいかないので、次のことをしたくありません。
a=`grep test file.txt`
if [ "$a" -eq "" ]
then
echo fail
else
echo success
fi
私はこのような簡単な解決策を探しています。
echo $(anything) は値をキャプチャする必要があります。
ベストアンサー1
あなたの結果が私の結果と一致しません。
echo 'some test here' > file.txt
grep test file.txt
echo $? # returns 0
echo 'something else here' > file.txt
grep test file.txt
echo $? # returns 1
また、完全なコード例を実行すると、キーワードがファイルにあるかどうかに応じて「成功」または「失敗」が表示されます。 (0
との間に空白がありません。]
そうしないと、エラーが発生して-bash: [: missing `]'
報告されなかったためです。)
grep test file.txt
if [ "$?" -eq 0 ]
then
echo success
else
echo fail
fi
grep
ただし、スタイル提案では、次のようにコマンドを直接テストします。
if grep test file.txt
then
echo success
else
echo fail
fi
grep
...ブロックの後に戻り値を使用したいかもしれないと思いました。この場合は、値を保存して続行してください。if
fi
grep test file.txt
ss=$?
if [ 0 -eq $ss ]
then
echo success
else
echo fail
fi
# Here $ss still contains the return value from grep