読み取った行にその行の記号が含まれていない*
ときに操作を実行するスクリプトを作成しようとしています。
私は成功せずに次のことを試しました。
if [ grep -v -q '*' ]
これにより、あまりにも多くのパラメータエラーが発生します。if [ "$(grep -v -q '*')" -eq '0' ];
これにより、単項演算子の推定エラーが発生します。
私は何が間違っていましたか?
ベストアンサー1
[
ifステートメントは終了状態を生成するすべてを許可するため、orなどのシェル組み込みtest
またはgrep
その両方を使用できます。
if [ "$(grep -c '*' file)" = 0 ]
then
echo 'star symbol not found'
fi
しかし、実際には以下を行う必要はありません。
if ! grep -q '*' file
then
echo 'star symbol not found'
fi
または:
while read x
do
if ! grep -q '*' <<eof
$x
eof
then
printf '%s does not contain star symbol\n' "$x"
fi
done < file
または:
awk '!/\*/ {print $0, "does not contain star symbol"}' file