Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 Bash While循环变量错误_Arrays_Bash_Loops - Fatal编程技术网

Arrays Bash While循环变量错误

Arrays Bash While循环变量错误,arrays,bash,loops,Arrays,Bash,Loops,在您开始关注之前,希望这不是BASH中while循环中出现变量访问问题的众多线程中的另一个。我研究了这些并实现了重定向方法,但是我遇到了一些问题 代码: !/bin/bash rm /tmp/sched.now rm /tmp/sched.later NOWURL="schedNOWurl" LATERURL="schedLATERurl" curl -s $NOWURL --output /tmp/sched.now curl -s $LATERURL --output /tmp/sche

在您开始关注之前,希望这不是BASH中while循环中出现变量访问问题的众多线程中的另一个。我研究了这些并实现了重定向方法,但是我遇到了一些问题

代码: !/bin/bash

rm /tmp/sched.now
rm /tmp/sched.later

NOWURL="schedNOWurl"
LATERURL="schedLATERurl"

curl -s $NOWURL --output /tmp/sched.now
curl -s $LATERURL --output /tmp/sched.later

re='^[0-9]+$'

if grep -q 'no shifts' /tmp/sched.now ; then
    nowpeople[0]="No Shifts Assigned For This Time"
    nowtime[0]="Now"
else
    while read line
    do
        if [[ ${line:0:1} =~ $re ]] ; then
            nowtime[$nowcount]=$line
            ((nowcount++))
        elif [[ ${line:0:1} == '-' ]] ; then
            nowpeople[$nowcount]=$line
            ((nowcount++))
        fi
    done < /tmp/sched.now
fi

declare -a latertime
declare -a laterpeople
if grep -q 'no shifts' /tmp/sched.later ; then
    laterpeople[0]="No Shifts Assigned For This Time"
    latertime[0]="Until 23:59"
else
    while read line
    do
        if [[ ${line:0:1} =~ $re ]] ; then
            latertime[$latercount]=$line
            ((latercount++))
        elif [[ ${line:0:1} == '-' ]] ; then
            laterpeople[$latercount]=$line
            ((latercount++))
        fi
    done < /tmp/sched.later
fi

echo ${nowpeople[@]}
echo ${nowtime[@]}
echo ${laterpeople[@]}
echo ${latertime[@]}
在上面和下面抛出一些HTML。请注意,这些都在各自的线路上

我面临的问题是循环没有将所有匹配项保存到数组中。在第二个循环中,它应该将三个条目拉入每个数组。现在,它提取一个格式错误的文本,如下所示:

- John Doe
1:30p-4pp
注意pm中缺少的m和pp中用p替换的m。 奇怪的是,如果我在array语句之前回显$line,那么这行就可以很好地从文件中提取出来,所以听起来像是我保存到数组中的方式


建议?如果您需要更多详细信息,请告诉我。

这个问题不太可能得到回答,因为没有多少人会全部阅读,请尝试写一个最小的例子,说明仍然存在相同的问题,并包括输入、输出和预期输出,以获得更好的回答:尽管帖子中的大部分内容都与问题相关。您认为哪些部分不相关?输入文件似乎有DOS行结尾;bash将其中的回车作为数据处理,并将其包含在$line的值中,从而导致您所描述的输出类型。
- John Doe
1:30p-4pp