Bash While Loop Variable Mishaps

时间:2015-04-24 08:02:24

标签: arrays bash loops

在你担心之前,这个(希望)不是关于BASH中的while循环中存在变量访问问题的许多线程中的另一个。我查看了这些并实现了重定向方法,但我遇到了一些问题。

代码:     #!/斌/庆典

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文件。我试图在循环中提取的文本看起来像这样

11a-1:30p
- John Doe

在它上面和下面抛出一些HTML。请注意,这些都是各自的。

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

- John Doe
1:30p-4pp

注意m中遗失的pm以及mp的{​​{1}}被取消pp。 奇怪的是,如果我在数组语句之前echo $line,那么该行就会从文件中被拉出来,所以听起来就像是我保存到数组的方式。

连连呢?如果您需要更多详细信息,请与我们联系。

0 个答案:

没有答案