3

次のコードを検討してください。

a=(1 2 3)
a='seven'

export a
declare -p a

出力 (からdeclare) は次のとおりです。

declare -ax a='([0]="seven" [1]="2" [2]="3")'

配列aも同様です。質問:

  1. 2行目を変更する方法はa、配列ではなく、値を持つ単純な変数になりますsevenか? unsetなどのないワンライナーを探しています。
  2. 変数を配列に割り当てると、配列全体ではなく、最初の要素のみが置き換えられます。この動作はどこで指定されていますか?

注: Bash v. 3.2.48 (OS X)。

(今日、この質問に答えたので、この問題について考えさせられました。よりクリーンな解決策を探しています)。


編集:私は探しています:

a=(1 2 3)

/* One line here please :) */
unset a
a='seven'

export a
declare -p a

しかし、明示的なことはしませんunsetaが実際にPATH変数である特別な場合に重要です(この質問を参照)。

4

2 に答える 2

2
于 2013-09-02T10:26:00.283 に答える