2021-01-18

 shell中>、<、=<、>=、=和gt、lt、le、ge、eq的区别和在[ ]中用会怎样

学到了ge、gt....比较运算符,然后想着试试><和它们的区别,就在[ ]里面试了一下。

首先是 = 和eq的区别,用了下面的代码

#!/bin/bash

if [ $1="456" ]
 then echo "456"
elif [ $1 -eq "123" ]
 then echo "123"
fi

第一个参数输入 123,结果直接输出456。

继而我又测试了>、<、>=、=<,结果都是直接输出第一个echo的值。

而式子输出第一个echo值的原因是[ ]里面只要是不为空,那它就是true值,可执行then后面的代码。

之后又测试了一下

#!/bin/bash
if [ "10">"1" ]
 then echo "yes1"
elif [ "1"="1" ]
 then echo "456"
elif [ $1 -eq "123" ]
 then echo "123"
fi

输出值为yes1,表明>、<、>=、=<也是可以在[ ]里面使用的。而上面的不能判断,我认为应该是参数类型的问题吧,$取到的参数值可能不是一个类型,所以不能判断。

if [ $1 -eq "ooo" ]
 then echo "123"
fi

输出为[: ooo: integer expression expected,说是需要整型表达式才行,所以-eq 不能用于判断字符串。

然后我很好奇,既然-eq需要整型表达式,是不是以为$1取到的是整型,如果是,那就意味着$1=“123”,两边也是整型,那应该能判断才对,那如果不是整型,那它要求需要整型的意义何在呢?

上一篇:python4


下一篇:python入门-简析程序控制流程