Arrays Bash While循环变量错误
在您开始关注之前,希望这不是BASH中while循环中出现变量访问问题的众多线程中的另一个。我研究了这些并实现了重定向方法,但是我遇到了一些问题 代码: !/bin/bashArrays 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
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