Linux 使用0初始化数组时,我做错了什么?
当我检查数组的长度始终为1时,即使我在命令行中给出了更多参数Linux 使用0初始化数组时,我做错了什么?,linux,bash,shell,Linux,Bash,Shell,当我检查数组的长度始终为1时,即使我在命令行中给出了更多参数 for i in $* do echo $i conect[$i]=0 done echo ${#conect} $*创建一个用IFS分隔的参数。这就是为什么。使用$@ 编辑 事实上,正如“另一个人”和“鲁德·赫尔德曼”(感谢你们两位)所指出的,我所说的并不完全正确 第一件事是罪过,因为这并不是完整的解决方案 但这让我很好奇,所以这里是正确的方法。 国际单项体育联合会的差异是一个事实。但如果您引用“$*”或“$@”,这一点就很
for i in $*
do
echo $i
conect[$i]=0
done
echo ${#conect}
$*创建一个用IFS分隔的参数。这就是为什么。使用$@ 编辑 事实上,正如“另一个人”和“鲁德·赫尔德曼”(感谢你们两位)所指出的,我所说的并不完全正确 第一件事是罪过,因为这并不是完整的解决方案 但这让我很好奇,所以这里是正确的方法。 国际单项体育联合会的差异是一个事实。但如果您引用“$*”或“$@”,这一点就很重要 将在同一行上输出所有参数
for i in "$@"
do
echo $i
done
我会一次做一件 $*创建一个用IFS分隔的参数。这就是为什么。使用$@ 编辑 事实上,正如“另一个人”和“鲁德·赫尔德曼”(感谢你们两位)所指出的,我所说的并不完全正确 第一件事是罪过,因为这并不是完整的解决方案 但这让我很好奇,所以这里是正确的方法。 国际单项体育联合会的差异是一个事实。但如果您引用“$*”或“$@”,这一点就很重要 将在同一行上输出所有参数
for i in "$@"
do
echo $i
done
我会一次做一件 您应该使用数组:
for i in "$@"
您应该使用数组:
for i in "$@"
试试这个:
#!/bin/bash
declare -A conect
for i in "$@"
do
echo $i
conect[$i]=0
done
echo ${#conect[@]}
说明:
- 必须使用
声明关联数组(即索引可以是非数字的)。如果保证索引是数字的,则不需要此选项declare-A
是字符串值变量的长度(字符数)${#foo}
是数组的长度(元素数)${#conect[@]}
- 正如其他人指出的,
优于“$@”
,尤其是当(引用的)参数可能包含空格时李>$*
#!/bin/bash
declare -A conect
for i in "$@"
do
echo $i
conect[$i]=0
done
echo ${#conect[@]}
说明:
- 必须使用
声明关联数组(即索引可以是非数字的)。如果保证索引是数字的,则不需要此选项declare-A
是字符串值变量的长度(字符数)${#foo}
是数组的长度(元素数)${#conect[@]}
- 正如其他人指出的,
优于“$@”
,尤其是当(引用的)参数可能包含空格时李>$*
表示“$@”中的i
表示“$@”中的i
f(){表示“$*”中的i;执行回显“循环”;完成;};f 1 2 3
显示这是false@KuuAku很好的建议,但不是OP问题的原因;请注意,$*
周围没有引号。请参阅此答案中的示例:f(){for i in$*;do echo“Looping”;done;};f 1 2 3
显示这是false@KuuAku很好的建议,但不是OP问题的原因;请注意,$*
周围没有引号。看看这个答案中的例子:很好的建议,但不是OP问题的原因;请注意,$*
周围没有引号。看看这个答案中的例子:很好的建议,但不是OP问题的原因;请注意,$*
周围没有引号。请参见本答案中的示例: