文件名替换在脚本中提供语法错误,在控制台中工作

时间:2013-02-25 14:38:06

标签: bash shell

我在/ var / log / uwsgi / named下有几个文件,类似于domain.123456789 我正试图循环文件,如下所示

for FILE in /var/log/uwsgi/domain.+([[:digit:]]); do         
    gzip $FILE; 
done

这适用于控制台。但是当作为脚本的一部分运行时,我会收到以下语法错误。

script.sh: line 16: syntax error near unexpected token `('

如何在shell脚本中使用替换?

1 个答案:

答案 0 :(得分:4)

通过添加以下内容确保在脚本中启用了extglob shell选项:

shopt -s extglob

如果没有这个,shell将无法识别您的+([[:digit:]])模式,您将收到错误。

您可能已经在bash配置文件中设置了此设置,这就是它在控制台中的工作原理。