我的脚本中声明了一个数组。
NAME[0]=Deepak
NAME[1]=Renuka
NAME[2]=Joe
NAME[3]=Alex
NAME[4]=Amir
echo "All Index: ${NAME[*]}"
echo "All Index: ${NAME[@]}"
有两种方法可以打印上面所示的整个数组。有人可以写出这些方法之间的区别吗?
答案1
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
是空格(默认)
可以看到执行结果复制.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`