予期しない表示"("付近の構文エラーまたは誤った実行

予期しない表示"("付近の構文エラーまたは誤った実行

私は端末を介してXディレクトリで作業を試みていますが、Yディレクトリでは何もしません。私がするとき

cd /mnt/dir/ && 
for i in !(dira|dirb|dird)/; do echo "$i"; done && 
cd y/ && for i in !(dirz)/; do echo "$i"; done

端末ではすべてが大丈夫ですが、.shファイルに入れて実行しようとすると、またはを取得し、エスケープするとそのsyntax error near unexpected token ( 部分だけが(出力|にインポートされます(たとえば:)。for!(dira|dirb|dird)/

.shファイルまたは.bashaliasesファイルのエイリアスで実行するには、この問題をどのように解決する必要がありますか?

答え1

拡張グロービングモードを使用しています。これがスクリプトで機能するには、次の点を確認してください。

  1. bashスクリプトを実行するための
  2. extglobスクリプトでシェルオプションを有効にします。

extglob次のコマンドを使用してシェルオプションを有効にできます。

shopt -s extglob

スクリプトソースから

関連情報