1

我在 /var/log/uwsgi/ 下有几个文件,名称类似于 domain.123456789 我正在尝试遍历文件,如下所示

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

这在控制台中有效。但是当作为脚本的一部分运行时,我收到以下语法错误。

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

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

4

1 回答 1

4

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

shopt -s extglob

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

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

于 2013-02-25T14:45:41.097 回答