bash:在while循环中抑制kill消息
我有一个进度条,它在等待外部程序完成执行时打印点。当它真的结束时,我得到一个丑陋的杀戮信息,我想压制它bash:在while循环中抑制kill消息,bash,Bash,我有一个进度条,它在等待外部程序完成执行时打印点。当它真的结束时,我得到一个丑陋的杀戮信息,我想压制它 #!/bin/bash program < input.file.1 > output.1 & sim='running simulation' echo -ne $sim >&2 while kill -0 $!; do echo -n . >&2 sleep 1 done #/bin/bash 程序输出.
#!/bin/bash
program < input.file.1 > output.1 &
sim='running simulation'
echo -ne $sim >&2
while kill -0 $!; do
echo -n . >&2
sleep 1
done
#/bin/bash
程序输出.1&
sim='running simulation'
echo-ne$sim>&2
而杀戮-0$!;做
回声-n.>&2.
睡眠1
完成
预期:运行模拟
实际:运行模拟……../run_with_dots.1:第8行:kill:(11872)-没有这样的进程
while kill -0 $! 2> /dev/null; do
顺便说一句,
printf.
比echo-n.
更便于携带;定义了echo-n
实现的行为,并且当posix
和xpg_echo
运行时标志在bash中都处于活动状态时,echo-n
在输出时发出-n
和换行符。类似地,printf'%b'$sim
比echo-ne$sim
更健壮(更重要的是,由于echo-e
不仅是实现定义的,而且还被禁止在输出上按标准的字母打印-e
;这是bash默认的开箱即用行为主动打破标准而不是扩展标准的少数几个地方之一——但同样,在这一点上如果设置了适当的运行时标志,该行为就会消失,echo-ne
停止工作……或者,按照标准的规定,开始正常工作)。