我有一个脚本,该脚本需要启动一个程序才能使该程序创建并填充一些文件夹。在脚本继续之前,该程序只需要短暂运行然后关闭即可。
但是,当程序被杀死时,脚本不会继续。我该怎么办?
printf "before"
(timeout -sHUP 3s firefox)
printf "after"
我以为我是在子外壳中启动程序的,但是我不确定是否是这种情况。
答案 0 :(得分:1)
我解决了这个问题,
set -o errexit
printf "before"
timeout -sHUP 3s firefox || true
printf "after"
更清洁的替代方法是
set -o errexit
printf "before"
set +e
timeout -sHUP 3s firefox
set -e
printf "after"
答案 1 :(得分:0)
printf
带有2个参数-一个FORMAT
字符串,然后是一个ARGUMENT
(即要输出的文本)。
调用printf "before"
时,实际上是在传递不带参数的格式字符串,该格式字符串显示不正确。
最简单的解决方法是改为使用echo
:
echo "before"
timeout -sHUP 3s firefox
echo "after"
或者,如果您需要格式化,例如:
printf "%s\n" "before"
timeout -sHUP 3s firefox
printf "%s\n" "after"