bash
環境変数はキーと値の文字列のペアのみであるため、配列を環境変数にすることはできません。
シェルが $PATH
で行うように行うことができます 変数。基本的にはパスの配列です。配列を、配列の値に存在しない特定の文字で区切られた文字列に変換します:
$ arr=( aa bb cc "some string" )
$ arr=$( printf '%s:' "${arr[@]}" )
$ printf '%s\n' "$arr"
aa:bb:cc:some string:
またはきちんとした、
arr=( aa bb cc "some string" )
arr=$( IFS=:; printf '%s' "${arr[*]}" )
export arr
${arr[*]}
の展開 arr
の要素になります IFS
の最初の文字で区切られた配列 、ここでは :
に設定 .このようにすると、文字列の要素が分離されることに注意してください (区切られていない ) :
まで 、つまり、最後に空の要素があったとしても、それを区別することはできません.
環境変数を使用してスクリプトに値を渡す代わりに、(明らかに?) コマンドライン引数を使用することができます:
arr=( aa bb cc )
./some_script "${arr[@]}"
スクリプトは、位置パラメータ $1
を使用して、渡された引数に 1 つずつアクセスします。 、 $2
、 $3
など、または [email protected]
を使用して :
printf 'First I got "%s"\n' "$1"
printf 'Then I got "%s"\n' "$2"
printf 'Lastly there was "%s"\n' "$3"
for opt in "[email protected]"; do
printf 'I have "%s"\n' "$opt"
done
配列は bash 固有です。環境変数は名前と値のペアです。
環境変数の仕様を読んでください。その一部は次のとおりです。
<ブロック引用>環境変数の値は文字列です。 C 言語プログラムの場合、環境と呼ばれる文字列の配列は、プロセスの開始時に使用可能になります。配列は、外部変数 environ によってポイントされます 、次のように定義されます:
extern char **environ;
これらの文字列の形式は name=value です; 名前 文字「=」を含めてはなりません。