1
複合コマンドでのbashオプションの設定
extglob複合化合物内でシェルオプションを設定すると、後続のアンチグロブが失敗することがわかりました。シェルオプションは、複合コマンドの外部で設定する必要がありますか?私はbashのmanページにそのような要件の兆候を見ませんでした。 例として、次のスクリプトは正常に機能します(prints a.0 a.1)。 #!/bin/bash touch a.0 a.1 \ a.b.0 a.b.1 shopt -s extglob ls "a."!(b*) ただし、最後の2行が複合コマンドとして実行されると、スクリプトは次のエラーで失敗します。 syntax error near unexpected token `(' ` ls "a."!(b*)' これは、4.2から4.4までのbashバージョンを使用して、さまざまな複合コマンドでテストされました。 (1)条件付き- if #!/bin/bash touch a.0 a.1 \ a.b.0 a.b.1 if true; then shopt -s extglob ls "a."!(b*) fi (2)ブレース- { } #!/bin/bash touch …