Bash
bash中兩種數組列印方法的區別
我在我的腳本中聲明了一個數組。
NAME[0]=Deepak NAME[1]=Renuka NAME[2]=Joe NAME[3]=Alex NAME[4]=Amir echo "All Index: ${NAME[*]}" echo "All Index: ${NAME[@]}"
有兩種列印整個數組的方法,如上所示。有人可以寫下這些方法之間的區別嗎?
echo "All Index: ${NAME[*]}"
等於echo "All Index: ${NAME[0]} ${NAME[1]} ${NAME[2]} ${NAME[3]} ${NAME[4]}"
echo "All Index: ${NAME[@]}"
如果變數echo "All Index: ${NAME[0]}" "${NAME[1]}" "${NAME[2]}" "${NAME[3]}" "${NAME[4]}"
的第一個字元是空格,則等於(預設)IFS
你可以在copy.sh中看到執行結果。
IFS
變數的預設值為$' \t\n'
。${array[*]}
並輸出由變數$*
的第一個字元分割的字元串。IFS
也可以更改要拆分的字元。NAME[0]=Deepak NAME[1]=Renuka NAME[2]=Joe NAME[3]=Alex NAME[4]=Amir IFS=: echo "All Index: ${NAME[*]}" # Output: `All Index: Deepak:Renuka:Joe:Alex:Amir` IFS= echo "All Index: ${NAME[*]}" # Output: `All Index: DeepakRenukaJoeAlexAmir` IFS=$', \t\n' echo "All Index: ${NAME[*]}" # Output: `All Index: Deepak,Renuka,Joe,Alex,Amir`