亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

如果運算符輸入為空,為什么會返回第一層判斷失敗的錯誤?

#!/bin/bash


read -t 30 -p "請輸入一個數字:" num1

read -t 30 -p "請輸入一個數字:" num2

read -t 30 -p "請輸入一個運算符:" ope

#通過read命令接受要輸入的參數

if [ -n ?"$num1" -a -n "$num2" -a -n "$ope" ]

#第一層判斷是否有值

? ? ? ? then

? ? ? ? test1=$(echo $num1 | sed 's/[0-9]//g')

? ? ? ? test2=$(echo $num2 | sed 's/[0-9]//g')

#定義變量test1和test2的值。把變量test值替換為空。如果能替換

#則為數字

? ? ? ? if [ -z "$test1" -a -z "$test2" ]

#判斷變量test1 2是否為空,為空證明 num1 num2是數字

? ? ? ? ? ? ? ? then

? ? ? ? ? ? ? ? ? ? ? ? if [ -n -o "$ope" == '+' -o "$ope" == '-' -o "$ope" == '*' -o "$ope" == '/' -o ]

? ? ? ? ? ? ? ? ? ? ? ? then

? ? ? ? ? ? ? ? ? ? ? ? res=$(($num1$ope$num2))

? ? ? ? ? ? ? ? ? ? ? ? else

#!/bin/bash


read -t 30 -p "請輸入一個數字:" num1

read -t 30 -p "請輸入一個數字:" num2

read -t 30 -p "請輸入一個運算符:" ope

#通過read命令接受要輸入的參數

if [ -n ?"$num1" -a -n "$num2" -a -n "$ope" ]

#第一層判斷是否有值

? ? ? ? then

? ? ? ? test1=$(echo $num1 | sed 's/[0-9]//g')

? ? ? ? test2=$(echo $num2 | sed 's/[0-9]//g')

#定義變量test1和test2的值。把變量test值替換為空。如果能替換

#則為數字

? ? ? ? if [ -z "$test1" -a -z "$test2" ]

#判斷變量test1 2是否為空,為空證明 num1 num2是數字

? ? ? ? ? ? ? ? then

? ? ? ? ? ? ? ? if [ -n -o "$ope" == '+' -o "$ope" == '-' -o "$ope" == '*' -o "$ope" == '/' -o ]

? ? ? ? ? ? ? ? ? ? ? ? then

? ? ? ? ? ? ? ? ? ? ? ? res=$(($num1$ope$num2))

? ? ? ? ? ? ? ? else ? ?

? ? ? ? ? ? ? ? ? ? ? ? echo '輸入的運算符有誤'

? ? ? ? ? ? ? ? ? ? ? ? exit 3

? ? ? ? ? ? ? ? fi ? ? ?

? ? ? ? else

? ? ? ? ? ? ? ? ? ? ? ? echo '輸入的非數字,請重新輸入'

? ? ? ? ? ? ? ? ? ? ? ? exit 2

? ? ? ? fi

else

? ? ? ? echo '未輸入,請重新輸入' ? ? ??

? ? ? ? exit 1

fi

? ? ? ? echo " $num1 $ope $num2 = $res "


正在回答

1 回答

知道了,第一個判斷條件里有寫-n“$ope”

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

如果運算符輸入為空,為什么會返回第一層判斷失敗的錯誤?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號