簡體   English   中英

Bash-替換並寫入同一行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM