【发布时间】:2021-07-06 13:15:12
【问题描述】:
check="$(cat "$HOME/log.txt" | grep 'some_string')"
if [ -z "${check}" ] ; then
echo "string not found"
else
echo "string found"
fi
在我的 bash 脚本中,我正在检查文件中的字符串,并通过检查变量是否为空来输出是否找到了字符串。很简单。 所以问题是当这个 $HOME/log.txt 文件不存在时,它会输出
cat: /home/user/log.txt: No such file or directory
string not found
这里并没有真正的错误,但我想抑制“没有这样的文件或目录”消息,我只是想使用 &>/dev/null 和 cat 命令来抑制这个,但是如果我这样做 check="$(cat "$HOME/log.txt" &>/dev/null | grep 'some_string')" ,结果@ 987654325@ 变量总是为空,因此它总是说没有找到字符串,即使它实际上在那里
如何抑制 cat 命令的输出并保留其变量值?
【问题讨论】:
-
用
&>/dev/null替换为2>/dev/null? -
这似乎运作良好,谢谢。如果你能把它作为答案,我一定会接受的。
&>/dev/null&&2>/dev/null之间的一个简短的区别会让它变得完美 -
grep 'some_string' "$HOME/log.txt" 2>/dev/null应该在没有猫和管道的情况下做同样的事情
标签: bash stderr io-redirection