我在一个命令上运行gnu-parallel,该命令在从bash shell运行时运行得很好,但当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并行字符串运行这个命令,所以最终得到的命令必须可以通过/bin/bash -c "Some Command“运行。
发布于 2012-10-10 04:40:38
您应该尝试以下代码:
bash <<EOF
shopt -s extglob
ls !(*site*).mol2
EOF说明:
当您运行bash -c时,您将创建一个subshell,并且不会继承shopt设置。
编辑
如果你真的需要one liner:
bash -O extglob -c 'ls !(*site*).mol2'https://stackoverflow.com/questions/12808011
复制相似问题