2010-03-07 183 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