启动并杀死脚本程序,然后继续

时间:2019-03-08 11:07:30

标签: bash process

我有一个脚本,该脚本需要启动一个程序才能使该程序创建并填充一些文件夹。在脚本继续之前,该程序只需要短暂运行然后关闭即可。

但是,当程序被杀死时,脚本不会继续。我该怎么办?

printf "before"

(timeout -sHUP 3s firefox)

printf "after"

我以为我是在子外壳中启动程序的,但是我不确定是否是这种情况。

2 个答案:

答案 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"