!(*.sh) はコマンドラインでは機能しますが、スクリプトでは機能しません。

!(*.sh) はコマンドラインでは機能しますが、スクリプトでは機能しません。

Ubuntuの端末で次のコードを使用すると正常に動作します。

rm !(*.sh) -rf

ただし、同じコード行をシェルスクリプト(clean.sh)に入れて端末でシェルスクリプトを実行すると、次のようにエラーが発生します。

clean.shスクリプト:

#!/bin/bash
rm !(*.sh) -rf

私が得るエラー:

./clean.sh: line 2: syntax error near unexpected token `('
./clean.sh: line 2: `rm !(*.sh) -rf'

助けてください?

ベストアンサー1

以下を有効にする必要がありますextglob

shopt -s extglob

おすすめ記事