我在/ 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脚本中使用替换?
答案 0 :(得分:4)
通过添加以下内容确保在脚本中启用了extglob
shell选项:
shopt -s extglob
如果没有这个,shell将无法识别您的+([[:digit:]])
模式,您将收到错误。
您可能已经在bash配置文件中设置了此设置,这就是它在控制台中的工作原理。