shopt -s extglob 不工作

Per*_*ika 2 bash wildcard

我正在远程服务器上运行我的脚本。这是我的 .sh 脚本的标题:

#!/bin/bash

shopt -s extglob; 
#turns on extended globbing features ('!' can then be used to exclude file names)

echo `ls -la /storage/brno2/home/nicki/snp/`;
cp -r /storage/brno2/home/nicki/snp/(!input) .
Run Code Online (Sandbox Code Playgroud)

感谢 echo,我可以看到名为“input”的文件夹位于我期望的文件夹中。然而,似乎 extglob 不适合我:(

/var/spool/torque/mom_priv/jobs/2308017.arien.ics.muni.cz.SC: line 11: syntax error near unexpected token `('
/var/spool/torque/mom_priv/jobs/2308017.arien.ics.muni.cz.SC: line 11: `cp -r /storage/brno2/home/nicki/snp/(!input) .'
Run Code Online (Sandbox Code Playgroud)

我当然可以列出我想要复制的所有文件。尽管如此,我还是想避免这种令人讨厌的做法。

谢谢。

cho*_*oba 5

扩展 glob 的正确语法是

!(pattern-list)
Run Code Online (Sandbox Code Playgroud)

感叹号应位于括号之外。