2010-03-07 176 views
1

我想在bash中做一些變量擴展,但不知何故結果被截斷/旋轉。下面是一個示例我的代碼:bash變量擴展

x="no-cabac,level=3,ref=3,bframes=0,subme=0,weightp=0" 
tts="{$x}" 
echo $tts 

此打印:}no-cabac,level=3,ref=3,bframes=0,subme=0,weightp=0

我預計:{no-cabac,level=3,ref=3,bframes=0,subme=0,weightp=0}

如果我改變TTS到tts=abc{$x}qwe輸出}qweno-cabac,level=3,ref=3,bframes=0,subme=0,weightp=0

我試圖逃避括號和移除報價,仍然不起作用。我知道有些東西必須逃脫,但我無法弄清楚。

bash --version輸出:GNU bash, version 3.2.48(21)-release (i686-pc-cygwin)

+0

這對我來說工作正常'GNU的bash,版本3.2.48(1)-release下(x86_64-蘋果darwin10.0)' –

回答

5

你得到你的$x從別的地方,它有一個\r末。嘗試:

tts="{${x/$'\r'/}}" 
+0

謝謝,僅此而已。我有我的腳本文件與CRLFs,因此額外的\ r: -/ –

+0

BTW我轉換爲LF和原始腳本工作得很好。 –

+2

只是一個診斷提示:將變量值(或任何字符串)傳遞給'| od -a'用_whitespace和帶有符號names_的控制字符來查看它的逐字符表示。例如,一個'\ r'顯示爲'cr','\ n'爲'nl','\ t'爲'ht'。 – mklement0