2015-08-21 106 views
0

我有結束如下bash腳本:顯示進度條或微調

trap "exit" INT 
for ((i=0; i < $srccount; i++)); do 
    echo -e "\"${src[$i]}\" will be synchronized to \"${dest[$i]}\"" 
    echo -e $'Press any key to continue or Ctrl+C to exit...\n' 
    read -rs -n1 
    #show_progress_bar() 
    rsync ${opt1} ${opt2} ${opt3} ${src[$i]} ${dest[$i]} 
done 

我需要一個命令或show_progress_bar()這樣一個功能,把.(點),而rsync命令正在運行(或旋轉/,按/ - \ |順序旋轉,而rsync正在運行)。 這可能嗎?我是否需要自己編寫這樣的函數,或者是否有可用於此目的的腳本?

回答

0

這不是很漂亮,但它的工作原理:

~$ while true; do echo -n .; sleep 1; done & sleep 3; kill %-; wait; echo; 
[1] 26255 
...[1]+ Terminated    while true; do 
    echo -n .; sleep 1; 
done 

(交換 「休眠3」 爲您的實際工作)

它的工作原理是這樣的:

  • while循環運行作爲背景工作。
  • 同時,你的工作(在我的例子中是「睡眠3」)在前臺運行。
  • 工作完成後,「kill% - 」殺死回聲循環。
  • 然後我們等待工作終止,並回顯一個換行符,以防萬一。

就像我說的那樣,它不漂亮。而且可能有更好的方法來做到這一點。 :)

編輯:例如,像答案在這裏:Using BASH to display a progress (working) indicator