2015-05-29 82 views
-2

我不知道是哪裏的問題:當我執行,我得到一個錯誤:比較數字雙數在bash

./script.sh: line 4: if[ 7 -gt 5 ]: command not found 
./script.sh: line 5: syntax error near unexpected token then' 
./script.sh: line 5: `then' 

#!/bin/bash 
read a 
read b 
if[ $a -gt $b ] 
then 
echo "$a is greater than $b" 
elif [ $a -lt $b ] 
then 
echo "$a is less than $b" 
else 
echo "$a is equal to $b" 
fi 
+1

正如bash標籤維基建議的那樣,您應該先在http://shellcheck.net/上運行您的代碼,然後再問問題。 –

+1

請注意,間距在外殼中至關重要。你必須非常小心 - 既不太多也不太少。 –

回答

2

在bash的if的語法如下:

if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi 

請注意後面的空格if;它是強制性的。還請注意[不是任何一種特殊的語法;它只是一個命令,與lsgrep相同。你不能輸入ifgrep,所以你也不能輸入if[

因爲if[不是if,所以你沒有在if塊中,所以then是意外的,因此你的語法錯誤。


這樣:

if [ "$a" -gt "$b" ] # Correct 

if ["$a" -gt "$b" ] # Wrong because of lack of space 

if[ $a -gt $b ]  # Wrong because of lack of space and lack of quotes 

(離開報價出來讓你開到一個完全獨立的一套錯誤的)。