2011-04-29 187 views
4

我有一個變量var =「abcde $$$$$$$$ fff $$ gg」。我想,以取代空間「」所有$但下面的看跌期權只有一個空間shell腳本變量替換字符

var=$(echo "$var" | tr '$' ' ') 

我怎麼能全部更換?

回答

8

適合我。你需要使用單引號或轉義的美元符號,否則他們是從雙引號字符串中刪除:

echo 'abcde$$$$$$$$fff$$gg' | tr '$' ' ' 
abcde  fff gg 

echo "abcde\$\$\$\$\$\$\$\$fff\$\$gg" | tr '$' ' ' 
abcde  fff gg 

echo abcde\$\$\$\$\$\$\$\$fff\$\$gg | tr '$' ' ' 
abcde  fff gg 

echo $'abcde$$$$$$$$fff$$gg' | tr '$' ' ' 
abcde  fff gg 
12

您無需調用外部命令(使用bash)

$ var='abcde$$$$$$$$fff$$gg' 
$ echo "${var//$/ }" 
abcde  fff gg 

更換請注意,您應該使用單引號,以便「$」符號不會被內插

+0

我把文件中的值讀入var。那麼它就像var =''或var =「」? – thetux4 2011-04-29 14:29:22

+0

如果您已經讀取了文件中的值,那麼'var ='''或var =「」'是無關緊要的。當你從文件讀取行時使用的變量就像'var'。所以只要'echo「$ {whatever_variable_you_used // $ /}」' – ghostdog74 2011-04-29 14:47:03

3

老問題,但我爲他們寫了這個hwo會在用搜索引擎搜索引擎搜索後來到這裏您必須使用這樣的echo -e

var="$(echo -e "$var" | tr '$' ' ' )"