gpt4 book ai didi

bash - 如何避免shell脚本执行中的命令错误

转载 作者:行者123 更新时间:2023-11-29 09:28:23 25 4
gpt4 key购买 nike

我在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com