0
假設我已經創建了一個關聯數組aaa
,其中declare -A aaa
和aaa[bbb]=0
,我有var=aaa
。我怎樣才能讓1 aaa[bbb]
增加只用var
和bbb
因爲我可能不知道在運行時數組的確切名稱。BASH:根據變量的名稱修改數組的內容
我試圖eval "(($var[bbb]++))"
,但沒有奏效。
謝謝!
假設我已經創建了一個關聯數組aaa
,其中declare -A aaa
和aaa[bbb]=0
,我有var=aaa
。我怎樣才能讓1 aaa[bbb]
增加只用var
和bbb
因爲我可能不知道在運行時數組的確切名稱。BASH:根據變量的名稱修改數組的內容
我試圖eval "(($var[bbb]++))"
,但沒有奏效。
謝謝!
我認爲這是足夠重要在回答中要注意的,而不僅僅是一個評論。你在不需要需要eval
這裏。算術語句獨立於參數擴展做獨立的變量引用,因此只需使用參數擴展來代替var
即可,這與aaa
就足夠了。
bash-4.4$ declare -A aaa
bash-4.4$ aaa[bbb]=0
bash-4.4$ ((aaa[bbb]++))
bash-4.4$ echo ${aaa[bbb]}
1
bash-4.4$ var=aaa
bash-4.4$ (($var[bbb]++))
bash-4.4$ echo ${aaa[bbb]}
2
您的代碼爲我工作。你在用什麼外殼?它如何失敗?你如何檢查你的代碼的結果? – Fred
順便說一句,使用'eval'可能開闢代碼注入風險,如果您不能保證變量的內容是安全的(例如,如果var'的'內容作爲參數傳遞或從文件中讀取)。 – Fred
@Fred我嘗試了'echo $ {!var}',只是有一個空行。我正在使用bash。 –