Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.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
Arrays 未在shell脚本中更新数组值_Arrays_Bash_Shell - Fatal编程技术网

Arrays 未在shell脚本中更新数组值

Arrays 未在shell脚本中更新数组值,arrays,bash,shell,Arrays,Bash,Shell,我有一个用于将值放入数组的shell脚本。剧本对我来说很好。问题是,如果我将数组放在for循环中(在do和done之间),并且当我尝试打印超出循环的数组长度时,即在完成之后,值不会得到更新。这里是sameple代码 function _read_value { count=0 array[0]="hi" for ///some condition do count++ array[count]="hello" done

我有一个用于将值放入数组的shell脚本。剧本对我来说很好。问题是,如果我将数组放在for循环中(在do和done之间),并且当我尝试打印超出循环的数组长度时,即在完成之后,值不会得到更新。这里是sameple代码

function _read_value
{
    count=0
    array[0]="hi" 
    for ///some condition
    do
        count++
        array[count]="hello"
    done
    echo ${#array[@]
}
当我试图在末尾打印数组的长度时,它将长度显示为1。
任何帮助都将不胜感激。

我对您的脚本及其更新值做了一些小更改,并且计数也很好。(我对计数增量和循环进行了更改)


我对此不熟悉,但您是否关闭for循环?还是do块?很抱歉,我使用的是while循环,而不是for。do和done在while中使用。好的,您打开并关闭do块,但是您的程序知道while的结束位置吗?对我来说,“echo”似乎也在while-loop中。实际上,对于shell脚本,while-loopok没有括号。继续努力。这似乎不是不可能解决的
#!/bin/bash
function read_value
{
    count=0
    while [ $count -le 5 ]
    do
        array[count]="hello"
        count=`expr $count + 1`
    done
    echo ${array[@]}
    echo ${#array[@]}
}

read_value