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 `('

シェルスクリプトで置換を使用するにはどうすればよいですか?

4

1 に答える 1

4

extglob次を追加して、スクリプトでシェルオプションが有効になっていることを確認します。

shopt -s extglob

これがないと、シェルは+([[:digit:]])パターンを認識せず、エラーが発生します。

おそらく、bashプロファイルにすでにこのセットが設定されているため、コンソールで機能します。

于 2013-02-25T14:45:41.097 に答える