我有一个shell脚本,涉及创建后台进程,然后在某个时候终止它。条带的精简版本是:
#!/bin/bash
sleep 100 &
# do something
kill $!
sleep 0
当我运行此脚本时,它会产生一些(不需要的)输出
> ./script.sh
./script.sh: line 5: 99515 Terminated: 15 sleep 100
即使我将kill line的stdout和stderr传递给/dev/null
,也会发生此输出。但由于某种原因,当我省略最后一行时,它不会发生。为什么要生成输出?如何防止输出?
答案 0 :(得分:0)
答案 1 :(得分:0)
使用trap
:
sleep 100 &
sleep_pid=$!
# Ignore SIGTERM
trap "" TERM
kill -TERM $sleep_pid
sleep 0
请参阅man 1p trap
:
如果
action
为空(""
),则shell应忽略每个指定的值 条件是否出现。