为什么shell中的[$value-lt 10]导致找不到命令



输出1:

Enter your value: 12
./testscript.sh: line 4: 12: command not found
Your value is more than 10

输出2:

Enter your value: 5
./testscript.sh: line 4: 12: command not found
Your value is more than 10

我需要知道出了什么问题。我的Linux测试就在明天:(

#!/bin/bash
echo -n "Enter your value: "
read value
if [$value -lt 10]
then
echo "Your value is less than 10"
else
echo "Your value is more than 10"
fi

您的if语句应如下所示。"]"之前的空格和"["之后的空格

    if [ $value -lt 10 ]

编辑

根据意见

您可以随时添加可选;在队伍的最后。下面的脚本会很好用。

a=20;
if [ $a -gt 10 ];
then
echo "true";
else
echo "false";
fi

你需要把你的状况放在[状况]中。下面的不起作用。

   ( condition )

它会说没有找到命令。As"("不是命令。其中As"["是检查条件的命令

更合适的方法是在Bash中使用[[ ]]而不是[ ],因为使用它可以避免分词和路径扩展。还可以添加其他条件:

if [[ ! $value =~ [0-9]+ ]]; then
    echo "Invalid input."
elif [[ value -lt 10 ]]; then
    echo "Your value is less than 10."
elif [[ value -eq 10 ]]; then
    echo "Your value is 10."
else
    echo "Your value is more than 10."
fi

要在混合中加入另一个选项:bash具有(( ... ))-算术条件:

if (( $value < 10 )); then ...

http://www.gnu.org/software/bash/manual/bashref.html#Conditional-构建

在bash中使用算术表达式可以做的一件事是删除$

if (( value < 10 )); then 

这在Shell算术中有点模糊:"在一个表达式中,Shell变量也可以通过名称引用,而不使用参数扩展语法。">

这可能会吸引类C语言的爱好者,但它与其他语言有点脱节,而且它不适用于所有变量(例如特殊参数($#(以及阵列元件(${foo[3]}((。

最新更新