mac の zsh と Linux/Windows の bash で互換性があるシェルスクリプトの連想配列

9072 ワード

OS が異なると連想配列(associative array)の書き方が異なる問題

mac のベース部分は UNIX 系の OS ですが、Linux と同じように使えるかというとそうでもない部分があります。その1つがシェルスクリプトの連想配列です。

Linux や Windows Git bash の環境の bash と mac の環境の zsh および bash では連想配列(associative array)の書き方が異なります。

本記事では、どの OS 環境のシェルスクリプトでも動く互換性がある連想配列の関数の紹介と、その関数を使わない方法まで検討した結果を紹介します。その際、mac において bash がどう扱われているかについても学ぶことができます。

どのように書けば互換性を保てるかをあらかじめ知っておけば、安心してコードを書くことができるようになるでしょう。

連想配列とは

まず連想配列(associative array)がどういうものか説明します。

連想配列とは、連想配列と文字列の組み合わせに対して値を設定、および、取得できるものです。JavaScript で書くと以下のようなコードになります。

JavaScript:

const  employee = {};
employee['first_name'] = 'John';
console.log( employee['first_name'] );  // John

このコードは、次の MDN のページに貼り付けることで動作確認することができます。