我发现错误在意外令牌附近执行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这样的数学程序
答案 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 subshell的命令字符串内部的路径。 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"