繁体   English   中英

bash脚本中目录名称中的括号

[英]parenthesis in a directory name in bash script

在意外令牌'('附近执行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'

请注意:它是从octave内部调用的,类似于matlab的数学程序

你为什么要打扰一个外壳? 引用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"

您需要在传递给bash子shell的命令字符串中引用路径。 例如:

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,您会收到此错误。 参数字符串将使用外部(调用)外壳去除单引号。

更新:正确引用单引号内的单引号,如查尔斯·达菲指出的

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"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM