[英]Linux Bash Trying to write checklist progress “bar” of sorts. Replace the same line
[英]Bash - replace & write into same line
我有一個bash腳本,可以從許多服務器獲取詳細信息。 它工作正常,但我希望這些行得到更新而不是重新編寫。
while [ true ] ; do
for i in $(seq ${#details[@]}); do
.... more code (irrelevant)
echo ${server[$i]}
echo $stat1
echo $stat2
echo $stat3
echo $stat4
done
done
我該怎么做,所有行都不斷更新為同一行? 我嘗試使用echo -ne,但這使所有內容都排成一行。
我希望該行保留位置,並僅使用新值進行更新。
如果有人知道一個把戲,那就太好了。
謝謝!
更新1
@cbuckley:
感謝您的回答,但無法正常工作。 用-ne這樣,我已經嘗試過了。 結果是(它總是創建新行):
10.0.0.2
100310.0.0.1
72710.0.0.3
368310.0.0.2
100310.0.0.1
72710.0.0.3
應該
10.0.0.1
17
1003
10.0.0.2
319
727
10.0.0.3
157
3683
IP下的值應不斷更新。 (我認為這通常應與-ne一起使用,但就我而言,它不起作用)。
如果您已經跨多行輸出,則必須先清除屏幕,才能刪除這些行。 您有兩種選擇:
watch
您可以編寫一次輸出統計信息的腳本,然后使用watch
重復該腳本:
watch -n 10 ./script.sh # calls script every 10 seconds.
如果不合適,則需要自己清除屏幕:
while [ true ] ; do
clear # clear the screen
for i in $(seq ${#details[@]}); do
# ...
done
sleep 10 # don't update the screen too often
done
但是,到目前為止,您已經實現了watch
的基本版本。
您可能想嘗試使用帶有-i
選項的sed
來“就地”編輯文件(即更改現有文件而不是編寫新文件)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.