【发布时间】:2011-08-08 19:24:21
【问题描述】:
贝壳大师,
我有一个 bash shell 脚本,我在其中启动了一个后台函数,比如 foo(),以显示一个无聊且冗长的命令的进度条:
foo()
{
while [ 1 ]
do
#massively cool progress bar display code
sleep 1
done
}
foo &
foo_pid=$!
boring_and_long_command
kill $foo_pid >/dev/null 2>&1
sleep 10
现在,当foo 死后,我看到以下文字:
/home/user/script: line XXX: 30290 Killed foo
这完全破坏了我原本非常酷的进度条显示的威力。
我如何摆脱这条消息?
【问题讨论】:
-
+1 用于在 re: bash 脚本中使用“非常酷”:)
-
即使将 kill foo_pid 更改为 kill $foo_pid,我也无法重现。
-
@Tanktalus,我认为这是因为脚本可能在输出发送到 stderr 之前就死了。我在伪代码的末尾添加了一个睡眠,它应该使您能够重新创建问题。
-
while [ 1 ]; do可以写成while :; do。 -
这应该与stackoverflow.com/questions/81520/… 合并,后者更专注但缺少一些来自这里的答案。
标签: linux bash shell unix scripting