前陣子在Shell Scrpit 中使用了陣列,宣告陣列的方式跟其他程式語言不同,導致後續問題排除了一段時間。
有問題的代碼:
echo "$array[@]"
正確的代碼:
echo "${array[@]}"
理由:
在一般程式語言中使用$array[index]來讀取陣列,但在shell 會將$array後解釋為不相關的文字串,需要使用大括號來明確地宣告這一段文字是整個陣列的變數。
例外:
如果想要在按照字面意思解釋,請使用${var}[idx]來防止出現此警告,並讓其他人更好閱讀。
此方法不會改變腳本工作方式,但會讓ShellCheck 和其他程序員更明白您的意圖。