この質問に対する回答がまだ完了しているかどうかはわかりません。見てみましたが、私がやりたいことに似たものが見つかりませんでした。
kshまたはbashシェルに対して実行できる複数のシェルスクリプトがあり、配列を使用します。私は実行中のシェルを調べ、配列を生成するために使用する組み込み関数を決定する「setArray」という関数を作成しました。 ksh の場合は set -A、bash の場合は typeset -a です。しかし、bash部分にはいくつかの問題があります。
この関数は、配列名と追加する値の2つのパラメータを使用します。これで ${ARRAY_NAME} と ${VARIABLE_VALUE} になります。以下を行います。
set -A $(eval echo \${ARRAY_NAME}) $(eval echo \${${ARRAY_NAME}[*]}) "${VARIABLE_VALUE}"
kshで完璧に動作します。しかし、
typeset -a $(eval echo \${ARRAY_NAME})=( $(eval echo \${${ARRAY_NAME}[*]}) "${VARIABLE_VALUE}" )
確かに。これは以下を提供します
bash: syntax error near unexpected token '('
文字列リスト(たとえば、MYARRAY = "one two three")に設定し、IFSを使用して繰り返すことができることを知っていますが、配列を使用する機能も失いたくありません。
どんなアイデアがありますか?
ベストアンサー1
eval "$ARRAY_NAME"'+=("$VARIABLE_VALUE")'
zsh
(またはにも適用されますksh93
)。
あなたはksh88
次のようにする必要があります:
eval 'set -A '"$ARRAY_NAME"' "${'"$ARRAY_NAME"'[@]}" "${VARIABLE_VALUE}"'