当我检查数组的长度总是1时,即使我在命令行中给出了更多的参数

for i in $*
do
echo $i
conect[$i]=0
done

echo ${#conect}

最佳答案

试试这个:

#!/bin/bash
declare -A conect
for i in "$@"
do
    echo $i
    conect[$i]=0
done
echo ${#conect[@]}

说明:
关联数组(即索引可以是非数值的)必须用declare -A声明。如果保证索引是数字的,则不需要这样做。
${#foo}是字符串值变量的长度(字符数);${#conect[@]}是数组的长度(元素数)。
正如其他人指出的,"$@"优于$*,特别是当(引用的)参数可能包含空格时。

10-07 21:44