Arrays 根据用户输入返回数组中的下一项

Arrays 根据用户输入返回数组中的下一项,arrays,bash,variables,iteration,user-input,Arrays,Bash,Variables,Iteration,User Input,我正在使用read请求用户输入。我希望将输入与数组匹配,如果匹配,则打印数组中的下一项 例如: echo "What day of the week is it?" read day for d in "$(week[@])" do if [ "$d" == "$day" ]; then echo "The next day of the week is ${week [d++]}." fi done 我只想在第二天打印。(因此,如果用户输入“星期三”,我只希望返回“星期四”。使用上面的脚本,

我正在使用read请求用户输入。我希望将输入与数组匹配,如果匹配,则打印数组中的下一项

例如:

echo "What day of the week is it?"
read day
for d in "$(week[@])" do
if [ "$d" == "$day" ]; then
echo "The next day of the week is ${week [d++]}."
fi
done

我只想在第二天打印。(因此,如果用户输入“星期三”,我只希望返回“星期四”。使用上面的脚本,只返回“星期一”这一天。

只需按索引循环数组,直到找到日期,并在循环后再次增加索引

week=(Su Mo Tu We Th Fr Sa Su)  # another Su at the end
read day

i=0
until [[ ${week[i]} == $day ]]; do
    let i++
done

echo ${week[++i]}
week=(Sun Mon Tue Wed Thu Fri Sat)

i=0
for str in ${week[@]}; do
  if [[ $str = "$day" ]]; then
         i=$(((i+1)%7))                #Get index 0 if day is saturday
         echo "Next day is ${week[i]}" 
        break 
    fi
     i=$((i+1)) 
done