問題タブ [parameter-expansion]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
bash - スクリプトは実行時に実行されるが、ソース時に失敗する
元のタイトル:スクリプトをソース (zsh) にすると、間接的なパラメーター置換が壊れる
zsh 5.7.1 (x86_64-apple-darwin19.0)
GNU bash、バージョン 4.4.20(1) リリース (x86_64-pc-linux-gnu)
私は Mac でシェル スクリプトを開発しており、bash と zsh の間で移植できるようにしようとしているので、配列のインデックス作成が考慮されます。KSH_ARRAYS を設定してインデックス作成を 0 から開始できることはわかっていますが、OS に使用中のシェルを照会し、それに応じて開始インデックスを設定することにしたため、以下で説明する問題が発生しました。
問題の原因となった間接展開を使用することは (とにかく私にとっては!) 理にかなっています。スクリプト indirect.sh を検討してください。
同じディレクトリにいるときにコマンドラインから実行すると、正常に動作します。
スクリプトをソースするときに問題が発生します。
スクリプトをソースするとパラメーター展開の動作が変わる理由がわかりません。
これは予想される動作ですか?もしそうなら、誰かがそれを説明し、できれば回避策を提供できればありがたいです。