回答:
grepパターンのインスタンスが少なくとも1つ見つかった場合は成功を返し、見つからない場合は失敗を返します。したがってelse、「does」と「does not」の両方を印刷する場合は句を追加するか、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
別の方法は、の終了ステータスを探すことですgrep。例えば:
grep -q "$user2" /etc/passwd
if [[ $? != 0 ]]; then
echo "User does not exist!!"
grep一致するものが見つからない場合1、終了し$?ます1。成功grepすると常に戻り0ます。したがって、を使用する$? != 0よりも安全です$? == 1。
if ! grep ...声明はうまくいきませんでした。したがって、これは代替です。
あなたが使用することができますgrepのオプションを「-L / --files-なしマッチ」、ファイルが文字列が含まれていないかどうかを確認するには:
if [[ $(grep -L "$user2" /etc/passwd) ]]; then
echo "User does not exist!!";
fi