我正在尝试将一个字符串追加到一个文件中,如果该文件存在并且它不在其中。否则,创建包含该字符串的文件。
if [ -f PATH_TO_FILE ]; then
if ! grep -q PATTERN PATH_TO_FILE; then
echo STRING >> PATH_TO_FILE
fi
else
echo STRING >> PATH_TO_FILE
fi
我想在 if 语句中使用 AND/OR 条件对其进行优化,但在语法上遇到困难。
我尝试执行以下操作,但如果文件不存在,它就不起作用。
grep -q PATTERN PATH_TO_FILE || echo STRING >> PATH_TO_FILE
谁能帮我找到最甜美的语法?
最佳答案
这个
grep -q PATTERN PATH_TO_FILE || echo STRING >> PATH_TO_FILE
执行与 if ..else
语句等效的功能。
因此,如果您不想在文件不存在时看到错误消息,您可以将 stderr
重定向到 /dev/null
。
grep -q PATTERN PATH_TO_FILE 2>/dev/null || echo STRING >> PATH_TO_FILE
关于bash - 在同一个 if 语句中检查文件是否存在和 grep,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29398815/