OSXでバージョン4.3.42を使用しているbashのマニュアルには、縦棒 '|'文字は、ファイルグロビングで複数のファイルパターンの区切り文字として使用されます。したがって、以下は私のシステム上で動作するはずです:bashファイルグロビング異常
projectFiles=./config/**/*|./support/**/*
しかし、第二のパターンは、パターンがprojectFilesに分解されることはありませんので、そのディレクトリ構造内にある最後のファイルの「アクセス許可が拒否されました」を与えます。私は、括弧内のパターンを包むなど、マニュアルにレイアウトされている
projectFiles=(./config/**/*)|(./support/**/*)
をこの上のバリエーションを試してみたが、それはどちらか動作しません。
私が間違っていることに関する提案はありますか?
マニュアルの関連部分をリンクすることはできますか?シェルスクリプトで '|'はプログラム間のパイプラインです。 "許可が拒否されました"というエラーは、 './support/**/*'が解決するものを実行しようとしたことによるものです。 –
また、単純な割り当ての間にグロビングは* *実行されません。 'foo = *'を試してから、 'echo" $ foo "'と 'echo $ foo'を比較してください。 *配列*代入中にグローブが発生します。 'foo =(*)'を見てください; echo "$ {foo [@]}" ' – chepner
extglob、 './ {config、support}/**/*'なしでこれを行うことができます。これは、configを持つパスとサポートスペースを区切ったパスに展開し、パターンマッチングを行います。または./@(config | support)/ **/* 'とextglobを指定します。いずれかの方がきれいです。 – BroSlow