在bash
我可以這樣做:使用「改爲」從CLI設置變量
$ ERR_TYPE=$"OVERLOAD"
$ echo $ERR_TYPE
OVERLOAD
$ read ${ERR_TYPE}_ERROR
1234
$ echo $OVERLOAD_ERROR
1234
這個偉大的工程,以動態地設置我的變量名;在腳本中它不起作用。我試過了:
#!/bin/env bash
ERR_TYPE=("${ERR_TYPE[@]}" "OVERLOAD" "PANIC" "FATAL")
for i in "${ERR_TYPE[@]}"
do
sh -c $(echo ${i}_ERROR=$"1234")
done
echo $OVERLOAD_ERROR # output is blank
# I also tried these:
# ${i}_ERROR=$(echo ${i}_ERROR=$"1234") # command not found
# read ${i}_ERROR=$(echo ${i}_ERROR=$"1234") # it never terminates
如何設置一個變量,就像我從CLI執行的操作一樣,但是在腳本中?謝謝
關於'declare'函數vs'eval',後者是不是真的甚至打算用它來設置變量? S. Klumpers方法可行,但我還沒有接受答案,因爲我想確保。謝謝!哎呀,我的意思是謝謝! (ALLCAPS = not good practice noted)... –
'eval'旨在將字符串評估爲shell代碼,而不是專門針對變量。 'declare'旨在創建變量,可能具有某個特定屬性(如關聯/索引數組,整數,小寫等) –