如果bash变量为1,则运行else,否则不运行

时间:2014-03-13 12:30:26

标签: linux bash shell debian

我想做这样的事情:

PROD=1

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

我是bash的新手,但任何人都可以解释为什么这段代码可能会失败?如果变量PROD被定义为值1,我试图只运行该代码块。

谢谢

2 个答案:

答案 0 :(得分:2)

这是一种正确的语法,只是在then条件之后错过了if

PROD=1

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

答案 1 :(得分:0)

或者您可以在没有' if 的情况下执行以下操作并使用大括号:

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

请注意,比较整数值而不是字符串,算术二进制运算符的左侧和右侧是' -eq '应该是正整数或负整数。您可以使用' = '用于字符串比较。

另外,值得注意的是 [字符本身是一个单独的命令,在没有Bash可用的* nix系统上,如果您愿意,可以使用它来实现可移植性。请参阅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