linux shell中 if else以及大于、小于、等于逻辑表达式介绍 |
您所在的位置:网站首页 › 大于90小于95怎么表示 › linux shell中 if else以及大于、小于、等于逻辑表达式介绍 |
比如比较字符串、判断文件是否存在及是否可读等,通常用"[]"来表示条件测试。 注意:这里的空格很重要。要确保方括号的空格。笔者就曾因为空格缺少或位置不对,而浪费好多宝贵的时间。 if ....; then .... elif ....; then .... else .... fi [ -f "somefile" ] :判断是否是一个文件 [ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限 [ -n "$var" ] :判断$var变量是否有值 [ "$a" = "$b" ] :判断$a和$b是否相等 -r file 用户可读为真 -w file 用户可写为真 -x file 用户可执行为真 -f file 文件为正规文件为真 -d file 文件为目录为真 -c file 文件为字符特殊文件为真 -b file 文件为块特殊文件为真 -s file 文件大小非0时为真 -t file 当文件描述符(默认为1)指定的设备为终端时为真 字符串判断 str1 = str2 当两个串有相同内容、长度时为真 str1 != str2 当串str1和str2不等时为真 -n str1 当串的长度大于0时为真(串非空) -z str1 当串的长度为0时为真(空串) str1 当串str1为非空时为真 含条件选择的shell脚本 对于不含变量的任务简单shell脚本一般能胜任。但在执行一些决策任务时,就需要包含if/then的条件判断了。shell脚本编程支持此类运算,包括比较运算、判断文件是否存在等。 基本的if条件命令选项有: - eq —比较两个参数是否相等(例如,if [ 2 –eq 5 ]) -ne —比较两个参数是否不相等 -lt —参数1是否小于参数2 -le —参数1是否小于等于参数2 -gt —参数1是否大于参数2 -ge —参数1是否大于等于参数2 -f — 检查某文件是否存在(例如,if [ -f "filename" ]) -d — 检查目录是否存在 几乎所有的判断都可以用这些比较运算符实现。脚本中常用-f命令选项在执行某一文件之前检查它是否存在。 ------------------------------------------------------------------------------------------- 由于程序需要,我要判断一个浮点数是否大于另一个浮点数。 大概情况描述如下: 变量 mya的值为一个两位小数,这个值是这么取的: Shell代码 ![]()
mya=` df -h | grep xvda2 | awk '{print $2}' | sed 's/G//' `
然后我希望让它跟4进行判断, 一开始是想利用整数来进行判断,但是不行: Shell代码 ![]()
shell 会报错,提示integer expression expected, 只能判断整数,而不是5.7这个浮点数。 但是shell里面是没有变量类型的,所以需要想个别的办法。 参考了CU里的大牛们的建议,这样写这个比较就可以了: Shell代码![]() 以工作,但这是不安全的.习惯于使用""来测试字符串是一种好习惯.
举例: 1.数字比较 #!/bin/bash i=6 a=10 if [ $a -eq 10 ] then echo "a = 10" fi if [ $a -ne $i ] then echo "a != $i" fi if [ $a -gt $i ] then echo "a > i" fi if [ $a -lt $i ] then echo "a i" fi if(("$a" > "$i")) then echo "(())a>i" fi if(($a != $i)) then echo "(())a!=i" fi 备注:通过sh运行脚本,[ ]运算是可以的,而(())运行出错chmod 777 后,直接./ 运行,都可以
2.字符串比较 #!/bin/bash a="123" b="1234" c="123" if [ "$a"x != "$b"x ] then echo "a != b" fi if [ "$a"x = "$c"x ] then echo "a == c" fi
判断字符串为空 [cpp] view plaincopyprint? if [ -z "$d" ] then echo "d is empty" fi备注: -e 文件存在 -a 文件存在(已被弃用) -f 被测文件是一个regular文件(正常文件,非目录或设备) -s 文件长度不为0 -d 被测对象是目录 -b 被测对象是块设备 -c 被测对象是字符设备 -p 被测对象是管道 -h 被测文件是符号连接 -L 被测文件是符号连接 -S(大写) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |