我想要做這樣的事情:如果bash的變量是1,那麼運行否則不
PROD=1
if [ "$PROD" -eq "1" ]
# Code
fi
我是新來的bash,但任何人都可以解釋爲什麼請這些代碼可能會失敗?我想,如果變量PROD被定義爲價值只運行的代碼塊1
謝謝
我想要做這樣的事情:如果bash的變量是1,那麼運行否則不
PROD=1
if [ "$PROD" -eq "1" ]
# Code
fi
我是新來的bash,但任何人都可以解釋爲什麼請這些代碼可能會失敗?我想,如果變量PROD被定義爲價值只運行的代碼塊1
謝謝
這是一個正確的語法,只是你的if
條件之後錯過了一個then
:
PROD=1
if [ "$PROD" -eq "1" ]; then
echo "yes"
fi
或者你可以做以下無「如果的,並使用大括號:
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
也許你忘了'then'?目前尚不清楚,因爲您遺漏了一部分代碼。請顯示您的完整代碼,並告訴我們失敗的原因。 – pfnuesel