次のコードを検討してください。
a=(1 2 3)
a='seven'
export a
declare -p a
出力 (からdeclare
) は次のとおりです。
declare -ax a='([0]="seven" [1]="2" [2]="3")'
配列a
も同様です。質問:
- 2行目を変更する方法は
a
、配列ではなく、値を持つ単純な変数になりますseven
か?unset
などのないワンライナーを探しています。 - 変数を配列に割り当てると、配列全体ではなく、最初の要素のみが置き換えられます。この動作はどこで指定されていますか?
注: Bash v. 3.2.48 (OS X)。
(今日、この質問に答えたので、この問題について考えさせられました。よりクリーンな解決策を探しています)。
編集:私は探しています:
a=(1 2 3)
/* One line here please :) */
unset a
a='seven'
export a
declare -p a
しかし、明示的なことはしませんunset
。a
が実際にPATH
変数である特別な場合に重要です(この質問を参照)。