bashで配列の各要素を適切にクオートする
シェルスクリプトでラッパーを書くときに、exec "$@"
とかよくやると思います。$@
は特殊な変数で、クオートすることによって、配列の「各要素」が適切にクオートされて関数などに渡される。正確に言うとクオートされるわけではないのですが、要素に空白が含まれていてもばらばらにならないということです。
この振る舞いを普通の配列で実現するにはどうすればいいのか。これは、"$array[@]"
のように添字に@
を指定してやれば良い。これは配列が存在するbash限定の話です。
Shell Parameter Expansion に色々書いてあって学びがあるので読むとよいです。