2010-07-29 14 views
1

我希望能夠echo一些東西(即微調),只要一個命令(數據庫轉儲是準確的),仍然在運行。直到command_is_finished;做

因爲現在,就好像15分鐘:「我的劇本還在運行嗎?」

在bash中的建議? whileuntil

感謝,

回答

0

while - 並檢查正在運行的進程的PID仍在運行。您可以使用$?

+0

假設進程在後臺啓動,PID在'$!' – 2010-07-29 14:51:51

0

在腳本中得到PID:

#!/bin/bash 
your-prog & 
while jobs %?your-prog > /dev/null 2>&1; do echo -ne '/\r'; sleep 1; echo -ne '\\\r'; sleep 1; done 
1

這裏,直到給它的命令做一個顯示微調一個小腳本。

#!/bin/bash 

if [[ -z "$*" ]] ; then 
    echo "Usage: $0 command [args] ..." 
    exit 0 
fi 

"[email protected]" & 
echo -n "Running '[email protected]'... " 

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腳本的方式是基於試驗和錯誤的,這樣對於提高該腳本的建議是非常歡迎。)