我在 shell 脚本中有一段代码如下..
run_checks()
{
# Check if program is already running
if ! mkdir /tmp/aisync.lock; then
printf "Failed to aquire lock.\n" >&2
exit 1
fi
trap 'rm -rf /tmp/aisync.lock' EXIT
}
它主要检查 aisync.lock 是否存在,如果存在则失败,以防止同一 shell 脚本的多个实例运行。
但是,如果我从控制台运行它,我会得到......
# syncai.sh
mkdir: 0653-358 Cannot create /tmp/aisync.lock.
/tmp/aisync.lock: Do not specify an existing file.
Failed to aquire lock.
有没有办法避免这个错误?
mkdir: 0653-358 Cannot create /tmp/aisync.lock.
/tmp/aisync.lock: Do not specify an existing file.
这样当我从命令行运行它时它看起来更干净。我知道如果我 cron 它我可以将我打算做的所有内容发送到/dev/null ..但是从控制台手动运行我如何删除打印出来的那些错误?
谢谢。
最佳答案
您可以像这样更改脚本的中间部分:
if ! mkdir /tmp/aisync.lock 2>/dev/null; then
printf "Failed to aquire lock.\n" >&2
exit 1
fi
这样来自mkdir
的错误信息将被丢弃。同时行为没有改变,mkdir
仍然失败,所以 if
中的条件将评估为真,脚本将以 1 退出。
关于bash - 如何避免shell脚本执行中的命令错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19435760/