在我的 bash 脚本中,如果文件中不存在某个字符串,我会尝试打印一行。
if grep -q "$user2" /etc/passwd; then
echo "User does exist!!"
Run Code Online (Sandbox Code Playgroud)
如果我希望字符串存在于文件中,我就是这样写的,但是如果在 /etc/passwd 文件中找不到用户,我该如何更改它以使其打印“用户不存在”?
Eri*_*ouf 68
grep如果找到至少一个模式实例,则返回成功,否则返回失败。因此,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
Run Code Online (Sandbox Code Playgroud)
您可以使用grep 选项 "-L / --files-without-match"来检查文件是否不包含字符串:
if [[ $(grep -L "$user2" /etc/passwd) ]]; then
echo "User does not exist!!";
fi
Run Code Online (Sandbox Code Playgroud)
另一种方法是查找 的退出状态grep。例如:
grep -q "$user2" /etc/passwd
if [[ $? != 0 ]]; then
echo "User does not exist!!"
Run Code Online (Sandbox Code Playgroud)
如果grep找不到匹配项,它将退出1,因此$?也会退出1。如果成功grep总是会返回。0所以使用起来$? != 0比$? == 1.
小智 6
grep -q query_text ./file.txt && echo true || echo false
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
110591 次 |
| 最近记录: |