無効なコマンドテストシェルLinux

無効なコマンドテストシェルLinux

こんにちは、このコードにバグがあります。ファイルを読み書きできることを確認し、ファイルに "/usr/bin/python2"文字列が含まれていることを確認したいが、シェルから次のエラーが表示されます。

grep /usr/bin/python2

この問題をどのように解決できますか?

if test -f $i -a test -w $i -a `grep /usr/bin/python2 < $i`
then
   echo $i
fi

答え1

if test -r "$i" -a -w "$i" && grep -q "/usr/bin/python2" "$i"
then
   echo "$i"
fi

if文全体を避け、grepを介して暗黙的に読みやすさを確認することもできます。

test -w "$i" && grep -l "/usr/bin/python2" "$i" 2>/dev/null

関連情報