2015-07-13 178 views
0

這個代碼不運行它顯示的錯誤: - whl_case_lop1: 25: whl_case_lop1: Syntax error: "elif" unexpected (expecting ";;")Linux Shell腳本代碼未執行?

#if [ -z $1 ] 
#then 
#rental=****unknown item**** 
#elif [ -n $1 ] 
#then 
#rental=$1 
#else [ -n $2 ] 
#then 
#rent=$2 
#fi 
echo "1. Vehicle_on_rent" 
echo "2. Living_house" 
echo -n "choose option [1 or 2]? " 
read cate; 
if [ $cate -eq 1 ]; 
then 
echo "Enter your vehicle type" 
read rental 
case $rental in 
"car") echo "for $rental in 20/km";; 
"van") echo "for $rental in 15/km";; 
"jeep") echo "for $rental in 10/km";; 
"bike") echo "for $rental in 5/km";; 
*) echo "We can't find $rental for your vehicle" 
elif [ $cate -eq 2 ]; 
then 
echo "Enter your Room requirement" 
read rent 
case $rent in 
"1BHK") echo "for $rent is 10k";; 
"2BHK") echo "for $rent is 15k";; 
"3BHK") echo "for $rent is 20k";; 
*) echo "we can't find $rent for your Requirement" 
else 
echo "Please check your requirements! Maybe you choose a wrong option" 
fi 
+2

將代碼粘貼到http://shellcheck.net – Jahid

回答

1

你需要在你的情況的*)分支;;case聲明與esac關鍵字結束:https://www.gnu.org/software/bash/manual/bashref.html#Conditional-Constructs

您可能需要使用select聲明,以限制用戶的迴應:

PS3="Enter your vehicle type: " 
select rental in car van jeep bike; do 
    case $rental in 
     car) echo "for $rental in 20/km"; break ;; 
     van) echo "for $rental in 15/km"; break ;; 
     jeep) echo "for $rental in 10/km"; break ;; 
     bike) echo "for $rental in 5/km"; break ;; 
     *) echo "We can't find $rental for your vehicle" ;; 
    esac 
done 

縮進您的代碼以提高可維護性。