为什么[-lt 10 $值在外壳导致找不到命令? [重复](Why does [$value -

2019-10-20 13:33发布

这个问题已经在这里有一个答案:

  • “找不到命令”在bash试图整数平等时 3个回答

输出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

Answer 1:

你的if语句应该是如下。 之前“]”的空间和空间后“[”

    if [ $value -lt 10 ]

编辑

按照意见

你可以随时添加可选的; 在该行的末尾。 下面的脚本将正常工作。

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

你需要把你的病情在[状态]。 下面的一个不起作用。

   ( condition )

它会说找不到命令 。 如“(”没有命令。其中为“[”是为了检查的状态的命令



Answer 2:

而比较合适的方法是使用[[ ]][ ]中的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


Answer 3:

抛出另一种选择到组合:bash有(( ... )) - 算术条件:

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

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

有一两件事你可以在bash与算术表达式要做的就是砸$

if (( value < 10 )); then 

这是记录一个位不明显壳牌算术 :“在一个表达式,shell变量也可以通过名称引用不使用参数扩展的语法。”

这可能会吸引到类似C语言的爱好者,但它是一个有点超前于语言的其余部分,它并不适用于所有的变量(如特殊PARAMATERS( $#和数组元素( ${foo[3]}



文章来源: Why does [$value -lt 10] in shell result in command not found? [duplicate]
标签: linux shell