Bash

當文件不包含字元串時如何使用grep

  • March 16, 2021

在我的 bash 腳本中,如果文件中不存在某個字元串,我會嘗試列印一行。

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

如果我希望字元串存​​在於文件中,這就是我編寫它的方式,但是如果在 /etc/passwd 文件中找不到使用者,我該如何更改它以使其列印“使用者不存在”?

grep如果找到至少一個模式實例,將返回成功,如果沒有,則返回失敗。因此,如果您希望同時列印“does”和“does not”,您可以添加一個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

您可以使用grep 選項 “-L / –files-without-match”來檢查文件是否不包含字元串:

if [[ $(grep -L "$user2" /etc/passwd) ]]; then   
 echo "User does not exist!!"; 
fi

引用自:https://unix.stackexchange.com/questions/223503