bash数组 - $ {#array_name [*]}和$ {#array_name [@]}之间的区别是什么

Rav*_*avi 0 arrays bash

bash-3.00$ cat arr.bash  
#!/bin/bash  

declare -a myarray  
myarray[2]="two"  
myarray[5]="five"  

echo ${#myarray[*]}  
echo ${#myarray[@]}  

bash-3.00$ ./arr.bash  
2  
2
Run Code Online (Sandbox Code Playgroud)

两者都给出了数组元素的数量.那两者有什么区别?

Aar*_*lla 6

在这种情况下,没有区别.当您展开数组并且扩展被引号括起时,两个"所有元素"下标会有所不同.

"${array[*]} 扩展到 "two five"

"${array[@]}扩展到"two" "five"(即两个单词).