bash脚本中目录名中的括号

时间:2015-04-21 18:36:46

标签: bash matlab shell octave

我发现错误在意外令牌附近执行bash语法错误`('

我知道错误是由')引起的,但我认为将命令放在'之间。 ' 假设允许目录名中的括号。如何在不重命名的情况下解决此问题?

bash -c 'cd /tmp/h1/clients/04212015142432811_Fs_1000_ahh/pls/03sox_a_Fs_1000_ahh_(000_bit)_(0.0000
0sig_in_deg)_to_(508_bit)_(30.00000sig_in_deg) && exec bash xfade.sh'

请注意: 它是从八度内部调用一个像matlab这样的数学程序

3 个答案:

答案 0 :(得分:1)

你为什么要打扰外壳?将参数引用到cd

(cd '/tmp/h1/clients/04212015142432811_Fs_1000_ahh/pls/03sox_a_Fs_1000_ahh_(000_bit)_(0.00000sig_in_deg)_to_(508_bit)_(30.00000sig_in_deg)' && exec bash xfade.sh)

如果你真的必须使用额外的bash -c ...

dirname='/tmp/h1/clients/04212015142432811_Fs_1000_ahh/pls/03sox_a_Fs_1000_ahh_(000_bit)_(0.00000sig_in_deg)_to_(508_bit)_(30.00000sig_in_deg)'
bash -c 'cd "$1" && exec bash xfade.sh' _ "$dirname"

答案 1 :(得分:1)

您需要引用传递给bash subshel​​l的命令字符串内部的路径。 E.g:

bash -c 'cd '"'"'/tmp/h1/clients/04212015142432811_Fs_1000_ahh/pls/03sox_a_Fs_1000_ahh_(000_bit)_(0.00000sig_in_deg)_to_(508_bit)_(30.00000sig_in_deg) && exec bash xfade.sh'"'"''

您收到错误,因为运行bash -c会将参数字符串传递给新shell。参数字符串将使用外部(调用)shell剥离的单引号。

更新:正如Charles Duffy所指出的那样在单引号内正确引用单引号

答案 2 :(得分:1)

你能为bash -c使用双引号吗?

 bash -c "cd '/tmp/h1/clients/04212015142432811_Fs_1000_ahh/pls/03sox_a_Fs_1000_ahh_(000_bit)_(0.00000sig_in_deg)_to_(508_bit)_(30.00000sig_in_deg)' && exec bash xfade.sh"