其餘的答案都非常好,但只是想添加一些額外的信息,以防有人來這裏尋找替代/更新多線回聲的解決方案。
所以我想和大家分享一個例子。在CentOS系統上嘗試了以下腳本,並使用「timedatectl」命令,該命令基本上打印了系統的一些詳細時間信息。
我決定使用這個命令,因爲它的輸出包含多行和完全適用於下面的例子:
#!/bin/bash
while true; do
COMMAND=$(timedatectl) #Save command result in a var.
echo "$COMMAND" #Print command result, including new lines.
sleep 3 #Keep above's output on screen during 3 seconds before clearing it
#Following code clears previously printed lines
LINES=$(echo "$COMMAND" | wc -l) #Calculate number of lines for the output previously printed
for ((i=1; i <= $(($LINES)); i++));do #For each line printed as a result of "timedatectl"
tput cuu1 #Move cursor up by one line
tput el #Clear the line
done
done
以上將打印的結果「timedatectl
」永遠將取代之前的回聲更新結果。
我不得不提的是,這段代碼只是一個例子,但根據您的需要,可能不是最好的解決方案。 類似的命令幾乎相同(至少在視覺上)是「watch -n 3 timedatectl
」。
但這是一個不同的故事。 :)
希望幫助!
只是對未來的一個提示:printf會做同樣的事情,沒有任何選項。優點是printf在每個環境和操作系統中的行爲通常都是相似的,而echo有時表現得非常不同。對於跨平臺腳本(或者如果你認爲你可能會關心這一點),使用printf是最佳實踐。 –
真棒@WilliamTFroggard謝謝你的朋友。 –
'printf a; printf b'輸出'ab' ---'printf a \\ r; printf b'輸出'b' ---'printf a \\ r;睡1; printf b''輸出'a',然後'b' – XavierStuvw