我在一个从bash shell运行时运行正常的命令运行gnu-parallel但是当使用-c标志并行执行bash时返回错误。我认为这与我正在使用的特殊globbing表达式有关。
ls !(*site*).mol2
这会成功返回。
启用标志后,命令失败
/bin/bash -c 'ls !(*site*).mol2'
/bin/bash: -c: line 0: syntax error near unexpected token `('
手册只指定-c调用bash来读取字符串的参数,我错过了什么?
编辑: 我应该添加我需要这个从gnu-parallel字符串运行,所以end result命令必须由/ bin / bash -c“Some Command”运行
答案 0 :(得分:3)
您应该尝试以下代码:
bash <<EOF
shopt -s extglob
ls !(*site*).mol2
EOF
说明:
当您运行bash -c
时,您创建了subshell
,并且未继承shopt
次设置。
修改强>
如果你真的需要一个班轮:
bash -O extglob -c 'ls !(*site*).mol2'