2012-04-25 54 views
0
var=ab 
echo -n "$var" 

輸出:ab刪除回聲線在bash

var=abc 
echo "$var" 

輸出:ababc

我想刪除第一ababc

我該怎麼做更換呢?

問候,INTELINSIDE

+0

換句話說,您希望您的輸出爲'abcabc'? – 2012-04-25 18:08:30

+0

目前還不清楚你在問什麼。 ababc是你想要的輸出還是你看到的輸出? – larsks 2012-04-25 18:13:57

+0

我無法在bash中重現它。如預期的那樣,我得到「abc」作爲輸出。 – 2012-04-25 18:16:06

回答

10

也許你正在尋找的東西,如:

var=ab 
echo -n "$var" 
var=abc 
echo -e "\r$var" 

這不會真正刪除任何東西,而僅僅是將光標移動到該行的開頭和覆蓋。如果正在寫入的文本太短,則先前寫入的內容仍將可見。你可以寫在舊的文本空間(很容易和便攜式):

printf "\r%-${COLUMNS}s" "$var" 

,或者使用一些終端轉義序列來刪除舊的文本(不便攜式):

echo -e "\r$var\033[K" 

移到開始行,寫入新文本,然後從光標刪除到行尾。 (這可能不起作用,取決於終端。)

+0

澄清:'\ r'是回車符,它告訴終端在行的開頭重新開始,覆蓋可能已經存在的字符。 – 2012-04-25 18:18:34

+0

這就是我想要的,謝謝! – intelinside 2012-04-26 13:38:07