摆脱错误信息

摆脱错误信息

我有一个包含许多命令的脚本。例如

#!/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

等等等等。

相关内容