直到command_is_finished;做

时间:2010-07-29 14:38:56

标签: bash shell

我希望能够echo一些东西(即一个微调器),只要命令(确切地说是数据库转储)仍在运行。

因为现在,它就像15分钟一样:“我的剧本还在运行吗?”

bash中的建议? whileuntil

谢谢,

3 个答案:

答案 0 :(得分:0)

while - 并检查正在运行的进程的PID是否仍在运行。您可以使用$?

获取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脚本编写方式基于反复试验,因此非常欢迎有关改进此脚本的建议。)