在你担心之前,这个(希望)不是关于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
以及m
中p
的{{1}}被取消pp
。
奇怪的是,如果我在数组语句之前echo $line
,那么该行就会从文件中被拉出来,所以听起来就像是我保存到数组的方式。
连连呢?如果您需要更多详细信息,请与我们联系。