使用bash -c和Globbing

时间:2012-10-09 20:36:34

标签: bash glob gnu-parallel

我在一个从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”运行

1 个答案:

答案 0 :(得分:3)

您应该尝试以下代码:

bash <<EOF
shopt -s extglob
ls !(*site*).mol2
EOF

说明:

当您运行bash -c时,您创建了subshell,并且未继承shopt次设置。

修改

如果你真的需要一个班轮:

bash -O extglob -c 'ls !(*site*).mol2'

See this thread