2014-03-13 38 views
0

我想要做這樣的事情:如果bash的變量是1,那麼運行否則不

PROD=1 

if [ "$PROD" -eq "1" ] 
# Code 
fi 

我是新來的bash,但任何人都可以解釋爲什麼請這些代碼可能會失敗?我想,如果變量PROD被定義爲價值只運行的代碼塊1

謝謝

+1

也許你忘了'then'?目前尚不清楚,因爲您遺漏了一部分代碼。請顯示您的完整代碼,並告訴我們失敗的原因。 – pfnuesel

回答

2

這是一個正確的語法,只是你的if條件之後錯過了一個then

PROD=1 

if [ "$PROD" -eq "1" ]; then 
     echo "yes" 
fi 
0

或者你可以做以下無「如果的,並使用大括號:

var=1 
[ $var -eq 1 ] && { 
echo i am running 
echo so far 
echo ok 
} 

請注意,您比較整數值而不是字符串,「-eq」的算術二進制運算符的左側和右側應該是正整數或負整數。您可以使用'='進行字符串比較。

此外,值得注意的是,[字符本身是一個單獨的命令,在* nix系統上沒有可用的Bash,如果您喜歡,可以使用它來實現可移植性。見在Ubuntu 13.10中,例如: -

$ whatis [ 
[ (1)    - check file types and compare values 
$ ls -l /usr/bin/[ 
-rwxr-xr-x 1 root root 39560 Jan 17 2013 /usr/bin/[ 

Bash有其自身內置的等價物,雖然。

$ type [ 
[ is a shell builtin 
相關問題