1

我在一个命令上运行 gnu-parallel,该命令在从 bash shell 运行时运行良好,但在使用 -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 并行字符串运行,因此最终生成的命令必须可由 /bin/bash -c "Some Command" 运行

4

1 回答 1

4

您应该尝试以下代码:

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

解释 :

当您运行时bash -c,您会创建一个subshell,并且shopt设置不会被继承。

编辑

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

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

看到这个线程

于 2012-10-09T20:40:38.177 回答