Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用0初始化数组时,我做错了什么?_Linux_Bash_Shell - Fatal编程技术网

Linux 使用0初始化数组时,我做错了什么?

Linux 使用0初始化数组时,我做错了什么?,linux,bash,shell,Linux,Bash,Shell,当我检查数组的长度始终为1时,即使我在命令行中给出了更多参数 for i in $* do echo $i conect[$i]=0 done echo ${#conect} $*创建一个用IFS分隔的参数。这就是为什么。使用$@ 编辑 事实上,正如“另一个人”和“鲁德·赫尔德曼”(感谢你们两位)所指出的,我所说的并不完全正确 第一件事是罪过,因为这并不是完整的解决方案 但这让我很好奇,所以这里是正确的方法。 国际单项体育联合会的差异是一个事实。但如果您引用“$*”或“$@”,这一点就很

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

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问题的原因;请注意,
$*
周围没有引号。请参见本答案中的示例: