shell報(bào)錯(cuò):-bash: [: ==: 期待一元表達(dá)式
問(wèn)題腳本:
1 #!/bin/bash
2 PRICE=$(expr $RANDOM % 1000)
3 TIMES=0
4 echo "商品的實(shí)際價(jià)格范圍0~999,猜猜看是多少?"
5 while true
6 do
7??????? read -p "請(qǐng)輸入你猜測(cè)的價(jià)格數(shù)目:" INT
8??????? let TIMES++
9 if [ $INT -eq $PRICE ]
10 then
11??????? echo "恭喜你答對(duì)了,實(shí)際價(jià)格是 $PRICE"
12??????? echo "你總共猜測(cè)了 $TIMES 次"
13??????? exit 0
14 elif [ $INT -gt $PRICE ]
15 then
16??????? echo "太高了!"
17 else
問(wèn)題報(bào)錯(cuò):
./caizhi.sh: 第 9 行:[: -eq: 期待一元表達(dá)式
./caizhi.sh: 第 14 行:[: -gt: 期待一元表達(dá)式
解決方法:
1. 當(dāng) if 語(yǔ)句中使用 [ ] 條件修飾符時(shí), $TNT 變量必須加上引號(hào)。
2. 當(dāng) if 語(yǔ)句中使用 [[ ]] 條件修飾符時(shí),$TNT 變量的引號(hào)可有可無(wú)。
正確腳本:
????? 1 #!/bin/bash
????? 2 PRICE=$(expr $RANDOM % 1000)
????? 3 TIMES=0
????? 4 echo "商品的實(shí)際價(jià)格范圍0~999,猜猜看是多少?"
????? 5 while true
????? 6 do
????? 7???????? read -p "請(qǐng)輸入你猜測(cè)的價(jià)格數(shù)目:" INT
????? 8???????? let TIMES++
????? 9 if [ "$INT" -eq "$PRICE" ]????? //在這一行將變量的雙引號(hào)加上或者改為雙中括號(hào)
???? 10 then
???? 11???????? echo "恭喜你答對(duì)了,實(shí)際價(jià)格是 $PRICE"
???? 12???????? echo "你總共猜測(cè)了 $TIMES 次"
???? 13???????? exit 0
???? 14 elif [ "$INT" -gt "$PRICE" ]???? //這這一行將變量的雙引號(hào)加上或者改為雙中括號(hào)
???? 15 then
???? 16???????? echo "太高了!"
???? 17 else
腳本執(zhí)行情況:
[root@localhost opt]# ./caizhi.sh
商品的實(shí)際價(jià)格范圍0~999,猜猜看是多少?
請(qǐng)輸入你猜測(cè)的價(jià)格數(shù)目:456
太高了!
請(qǐng)輸入你猜測(cè)的價(jià)格數(shù)目:345
太高了!
請(qǐng)輸入你猜測(cè)的價(jià)格數(shù)目:101
太低了!
請(qǐng)輸入你猜測(cè)的價(jià)格數(shù)目:102
恭喜你答對(duì)了,實(shí)際價(jià)格是 102
你總共猜測(cè)了 4 次