抑制shell脚本错误消息(suppress shell script error messages

2019-08-18 02:28发布

在我的shell脚本我有几行:

rm tempfl.txt
rm tempfl2.txt

如果这些都不存在,我得到的错误信息:

rm: tempfl2.txt: No such file or directory
rm: tempfl.txt: No such file or directory

有没有办法只能抑制,即使他们并不总是出现这些消息,因为可能存在的文件?

Answer 1:

你有两个选择:

禁止rm警告

$ rm tempfl.txt 2> /dev/null

重定向脚本输出/dev/null

$ ./myscript.sh 2> /dev/null

后者遗漏了你的脚本生成所有其他警告消息的缺点。



Answer 2:

至于其他的答案状态,您可以使用command 2> /dev/null扔掉从输出错误command

但是,什么是怎么回事?

>是用于重定向输出操作。 2是标准错误输出流的引用,即2> =重定向错误输出。

/dev/null是“空设备”,这只是吞下提供给它的任何输入。 您可以将二者结合起来,从一个命令,有效地扔掉输出。

全参考:

  • > /dev/null扔掉标准输出
  • 1> /dev/null扔掉标准输出
  • 2> /dev/null扔掉stderr的
  • &> /dev/null扔掉标准输出 标准错误


Answer 3:

你应该重定向像所有的错误信息到/ dev / null的

rm tempfl2.txt 2> /dev/null


Answer 4:

试试这个命令:

rm -f tempfl.txt

-f选项的作用就像这样:

-f, --force  ignore nonexistent files, never prompt

该命令还没有报告非零的错误代码的情况下,该文件不存在。



Answer 5:

添加到上述问题的答案:这可能是一个更好的主意,让错误信息(如拒绝许可或一些这样的)。 只是测试文件的存在,删除它之前:

[ -f file.txt ] && rm file.txt

这是假设一个Bourne外壳一样,例如庆典。 上面有额外的好处,它不会尝试删除一个目录,一些rm不能做。



Answer 6:

我们可以使用2> /dev/null抑制输出误差和|| true || true保证成功退出状态:

rm foo
=> rm: cannot remove ‘foo’: No such file or directory

rm foo 2> /dev/null
echo $?
=> 1

rm foo 2> /dev/null || true
echo $?
=> 0

如果你是在一个shell脚本,生成文件等使用的命令,也许你需要这个。



文章来源: suppress shell script error messages