我有一个包含许多命令的脚本。例如
#!/bin/sh
mv new /root/
mv old /root/
mv foo /code
#many other commands
如果找不到文件“new”,bash 将给出一条错误消息:foo: No such file or directory
我可以通过将 stderr 中的所有输出重定向到 /dev/null 来抑制错误消息
mv foo /code 2>1 /dev/null
问题:
有没有办法简单地做到这一点而不修改整个脚本?有没有办法可以隐藏脚本中的所有错误消息?
答案1
你可以抑制所有消息在脚本中通过如下方式启动脚本:
yourcommand &>filename
.例如./myscript &> /dev/null
或者你可以使用your_script 2> /dev/null
最后将重定向所有输出标准错误到 bitbucket,而不需要将其附加到每个命令。由于这会从可见输出中删除所有错误,因此这将使脚本很难调试。您应该检查每个命令的返回值以查看是否发生错误并可选地中止。
您可以使用 来执行后者$?
。
例如
#!/usr/bin/env bash
mv new /root/
if [[ $? -ne 0 ]]; then
#ignore error since it is not important, or
#
# echo "YIPES! CRITICAL FAILURE. Aborting whole script!
exit 1
fi
Next command here
等等等等。