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[@]}"

有两种方法可以打印上面所示的整个数组。有人可以写出这些方法之间的区别吗?

答案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`

相关内容