ファイルに文字列がない場合にgrepを使用する方法

ファイルに文字列がない場合にgrepを使用する方法

私のbashスクリプトでファイルに特定の文字列がない場合は、行を印刷しようとしています。

if grep -q "$user2" /etc/passwd; then
    echo "User does exist!!"

文字列がファイルに存在するようにするには、次のように書くことができますが、/etc/passwdファイルにユーザーが見つからない場合は、「ユーザーが存在しません」と印刷するように変更するにはどうすればよいですか?

ベストアンサー1

grepパターンのインスタンスが1つ以上見つかった場合は成功を返し、何も見つからない場合は失敗を返します。したがって、else「はい」と「いいえ」の両方を印刷するには、句を追加するか、条件を直接否定してif失敗のみを取得できます。それぞれの例:

if grep -q "$user2" /etc/passwd; then
    echo "User does exist!!"
else
    echo "User does not exist!!"
fi

if ! grep -q "$user2" /etc/passwd; then
    echo "User does not exist!!"
fi

おすすめ記事