BashとZshは同じ様なシェルスクリプトを書くことが出来ますが 機能的な違いが微妙にあります。
特に大きな違いとして配列の番号がBashでは0から始まるのに対してZshでは通常1から始まることがあります。
これに対する対処法について。
Bash/Zshの違い
BashとZsh基本的には似たような機能を持ち、 Zshの方が機能が豊富、といった感じのものですが 同じ様な機能で微妙に機能が違うものが結構借ります。
その辺をまとめたのが以下の記事。
特に配列が0番から始まるか1番から始まるか、という違いは結構大きいと思います。
Zshでは通常1番から始まりますが、
setopt ksharrays
とすると0番から始まる様になります。
ある関数の中だけ、とかで有効にしたい場合には
setopt localoptions ksharrays
とすると関数を抜ければ元の状態に戻ります。
Bash/Zshで共通の動作をする関数を作る
以下の様な関数を作るとksharrays
などを設定しなくても
Bash/Zshで同じ動作で同じ番号のものを取得することが出来ます。
1 2 3 4 5 |
|
これを使って
get_n 1 "${array[@]}"
とすればarray
の1番目のものを取得できます。
ただし、これは0から始まった番号です。
Zshでもこれで
a=(a b c)
get_n 1
とすればksharrays
の
設定に関わらずb
が取得出来ます。
Zshの様に1からスタートしたければ
1 2 3 4 5 |
|
としておけばOK。
Sponsored Links