私は端末を介して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
拡張グロービングモードを使用しています。これがスクリプトで機能するには、次の点を確認してください。
bash
スクリプトを実行するためのextglob
スクリプトでシェルオプションを有効にします。
extglob
次のコマンドを使用してシェルオプションを有効にできます。
shopt -s extglob
スクリプトソースから