2010-02-24 25 views
3

首先,感謝所有人的幫助。我可以在幾天內看到我的項目順利完成..bash中的狀態欄

我需要知道如何將狀態欄放在Shell腳本中,像這樣。

No_of_files=55 
index=0 

while [ $index -lt $No_of_files ] 
do 
    echo -en "$index of $No_of_Files Completed" 
    index=$((index + 1)) 
done 

預期結果: 1 55的已完成的已完成55

每次迭代 2,索引應該更換而不是其他字符。

感謝 基蘭

+0

如果答案適合您,請務必將其標記爲接受的答案。這對於您將來獲得更詳細的答案的能力將會有很大的幫助,並且可以幫助那些遇到同樣問題的人們。 – SiegeX 2010-02-24 09:39:01

+0

我是新來這個論壇,並驚訝有多快的人已經即將相互幫助..感謝您指出,再次.. 基蘭 – Kiran 2010-02-24 09:43:12

回答

6

可以打印\r回到行的開始,這樣就可以覆蓋的最後一件事印有新的消息:

for ((I=0 ; I < 10 ; I++)); do 
    echo -en "\r$I of 10 completed" 
    sleep 1 
done 
echo 

這看起來像剛剛$I數量將發生變化。

+1

+1,並刪除了我的答案,因爲我比'輸入hpa 0'更喜歡'\ r',因爲我確信它更便於攜帶。 – SiegeX 2010-02-24 09:29:42

+0

這就是我一直在尋找..驚人..謝謝 – Kiran 2010-02-24 09:33:03

3

您忘記遞增$索引變量。 ((index++))。你可以看到here也是一個腳本來執行進度條

這裏是一個窮人的版本

No_of_files=55 
index=0 

while [ $index -lt $No_of_files ] 
do 
    echo -ne "\r$index of $No_of_files Completed" 
    ((index++)) 
    sleep 1 
done 
+0

謝謝..我忘了補充.. :)感謝您指出它 – Kiran 2010-02-24 09:22:43

+0

我不會推薦使用'clear',因爲這會消滅您將來可能需要或添加的任何其他類型的屏幕信息。 '輸出hpa 0'或甚至回顯出一大堆'\ b'是更好的選擇。 – SiegeX 2010-02-24 09:26:17