我想做这样的事情:
PROD=1
if [ "$PROD" -eq "1" ]
# Code
fi
我是bash的新手,但任何人都可以解释为什么这段代码可能会失败?如果变量PROD被定义为值1,我试图只运行该代码块。
谢谢
答案 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