回答:
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