3

使用 if/else 语句时,我收到一个简单脚本错误。
编码:

#!/bin/sh
count=100
if [$count > 3]; then
echo "Test IF"
fi

错误:/bin/ash:第 6 行:[100:未找到

4

5 回答 5

8
#!/bin/sh 

count=100;
if [ "$count" -gt 3 ]; then
  echo "Test IF";
fi

[更正您的语法:必须在and周围使用空格],必须引用参数扩展,并且-gt适用于[ ]. >in sh 用作重定向运算符;如果你想在算术比较中使用它,你必须使用 bash-only 语法

$(( $count > 3 ))
于 2012-09-28T13:35:13.937 回答
1
#!/bin/sh 

if [ $var -eq 12 ]; then 
    echo "This is a numeric comparison if example"
fi

if [ "$var" = "12" ]; then
    echo "This is a string if comparison example"
fi

if [[ "$var" = *12* ]]; then
    echo "This is a string regular expression if comparison example"
fi
于 2012-10-03T12:44:28.353 回答
0

这也行!

#!/bin/sh
count=100
if [ $count -gt 3 ];
then
    echo "Test IF"
fi
于 2014-01-07T09:18:14.637 回答
0

shell 中的 if 语句使用命令 [. 由于 [ 是一个命令(您也可以使用“测试”),因此在写入要测试的条件之前需要一个空格。要查看条件列表,请键入: man test

您将在手册页中看到:

s1 > s2测试字符串 s1 是否在字符串 s2 之后

n1 gt n2测试整数 n1 是否大于 n2

在您的情况下,使用 > 会起作用,因为字符串 100 在字符串 3 之后,但这样写更合乎逻辑

if [ $count -gt 3 ]; then
   echo "test if"
fi
于 2012-09-28T13:42:26.050 回答
-1
if [[ "$x" == "true" ]]; then

  echo "value matched"

else

 echo "value doesn't matched"

fi
于 2020-09-17T11:57:16.680 回答