我希望能够echo
一些东西(即一个微调器),只要命令(确切地说是数据库转储)仍在运行。
因为现在,它就像15分钟一样:“我的剧本还在运行吗?”
bash中的建议? while
? until
?
谢谢,
答案 0 :(得分:0)
while
- 并检查正在运行的进程的PID是否仍在运行。您可以使用$?
答案 1 :(得分:0)
在剧本中:
#!/bin/bash
your-prog &
while jobs %?your-prog > /dev/null 2>&1; do echo -ne '/\r'; sleep 1; echo -ne '\\\r'; sleep 1; done
答案 2 :(得分:0)
这是一个显示微调器的小脚本,直到完成给它的命令。
#!/bin/bash
if [[ -z "$*" ]] ; then
echo "Usage: $0 command [args] ..."
exit 0
fi
"$@" &
echo -n "Running '$@'... "
BACKSPACE='\010'
SPINNER='|/-\'
INDEX=0
while kill -0 $! 2>/dev/null ; do
echo -n -e "${SPINNER:$INDEX:1}"
sleep 0.2
(( INDEX = ($INDEX + 1) % 4 ))
echo -n -e "$BACKSPACE"
done
echo -e "${BACKSPACE}done."
使用示例:
$ ./spinner sleep 3
Running 'sleep 3'... [spinner displayed here]
过了一会儿:
$ ./spinner sleep 3
Running 'sleep 3'... done.
$
(我的bash脚本编写方式基于反复试验,因此非常欢迎有关改进此脚本的建议。)