2015-09-07 38 views
1

我正在使用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 

我只想打印第二天。 (因此,如果用戶輸入「星期三」,我只希望返回「星期四」。對於上面的腳本,僅返回「星期一」的日期。

回答

1

只需按索引遍歷數組,直到找到天和在循環後再次增加索引。

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]} 
+0

這完美的作品,謝謝。 – awright19

0
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 
相關問題