我有一个包含许多字符串的数组,并且想对每个字符串做一些工作。我原以为简单的 for 循环会起作用,但这会导致严重的问题:
for list in $valarr
do
for word in ${valarr[j]}
do
#echo word: $word
if [ $i -ge $f ] && [ $i -le $t ]; then
echo -e -n "$word\t"
fi
i=`expr $i + 1`
done
echo $j ${#valarr[@]}
i=0
j=`expr $j + 1`
done
如您所见,我有两个循环。嵌套在里面的那个完成了我需要完成的工作(并且工作正常),但外部 for 循环认为它拥有的元素数是它的第一个元素 (string) 中的单词数。从结构上讲,我真正想做的是这样的:
for each string in an array:
for each word in the string:
do some work
done
done
为什么 bash 会有这样的行为,我该如何完成我需要做的事情?(抱歉,顺便说一句,对于清晰度或格式方面的任何问题)