经常写shell的朋友可能已经很熟了。有不同意见的同学请指出来,在这里多谢大家了。

bash中如何实现条件判断?
条件测试类型:
    整数测试
    字符测试
    文件测试

一、条件测试的表达式:

[ expression ]  括号两端必须要有空格
[[ expression ]] 括号两端必须要有空格
test expression
组合测试条件:
-a: and
-o: or
!: 非

二、整数比较:

-eq 测试两个整数是否相等
-ne 测试两个整数是否不等
-gt 测试一个数是否大于另一个数
-lt 测试一个数是否小于另一个数
-ge 大于或等于
-le 小于或等于 命令间的逻辑关系
    逻辑与:&&
        第一个条件为假 第二个条件不用在判断,最总结果已经有
        第一个条件为真,第二个条件必须得判断
    逻辑或:||

三、字符串比较

字符串比较:
== 等于 两边要有空格
!= 不等
> 大于
< 小于

四、文件测试

-z string 测试指定字符是否为空,空着真,非空为假
-n string 测试指定字符串是否为不空,空为假 非空为真
-e FILE 测试文件是否存在
-f file 测试文件是否为普通文件
-d file 测试指定路径是否为目录
-r file 测试文件对当前用户是否可读
-w file 测试文件对当前用户是否可写
-x file 测试文件对当前用户是都可执行
-z 是否为空 为空则为真
-a 是否不空

五、if语法

if 判断条件 0为真 其他都为假
单分支if语句
if 判断条件;then
statement1
statement2
.......
fi
双分支的if语句:
if 判断条件;then
statement1
statement2
.....
else
statement3
statement4
fi
Note:
if语句进行判断是否为空
[ "$name” = "" ]
等同于
[ ! "$name" ]
[ -z "$name" ]
Note:
使用if语句的时候进行判断如果是进行数值类的 ,建议使用 let(())进行判断
对于字符串等使用test[ ] or [[ ]] 进行判断
(())中变量是可以不使用$来引用的
example:表述数字范围的时候 可以使用if可以是使用case
if [ $x -gt -o $x -lt ]
case $x in
)
[-]) if [ "X$name" != "x" ]
这个语句的意思是如果$name为空,那么X=X成立折执行下面的结果; 写脚本的时候很多时候需要用到回传命令,$?如果上一个命令执行成功,回传值为0,否则为1~255之间的任何一个
0为真
非0为假
条件测试的写法:
、执行一个命令的结果
if grep -q "rm" fs.sh;then 、传回一个命令执行结果的相反值
if !grep -q "rm" fs.sh;then 、使用复合命令((算式))
if ((a>b));then 、使用bash关键字 [[判断式]]
if [[ str > xyz ]];then 、使用内置命令:test 判断式
if test "str" \> "xyz";then 、使用内置命令:[判断式] 类似test
if [ "str" \> "xyz" ];then 、使用-a -o进行逻辑组合
[ -r filename -a -x filename ] 、命令&&命令
if grep -q "rm" fn.sh && [ $a -lt ];then 、命令||命令
if grep -q "rm" fn.sh || [ $a -lt ];then

if 语法

六、示例脚本

示例脚本(

写一段脚本,输入一个测验成绩,根据下面的标准,输出他的评分

成绩(A-F)。

A: 90–100

B: 80–89

C: 70–79

D: 60–69

F: <60

#/bin/bash
#Verson:0.1
#Auther:lovelace
#Pragram:This pragram is calculation your grade
#import an argument
read -p "Please input your grade:" x
declare -i x
#jugemet $x value is none or not
if [ "$x" == "" ];then
echo "You don't input your grade...."
exit
fi
#jugement the gread level
if [[ "$x" -ge "" && "$x" -le "" ]];then
echo "Congratulation,Your grade is A."
elif [[ "$x" -ge "" && "$x" -le "" ]];then
echo "Good,Your grade is B."
elif [[ "$x" -ge "" && "$x" -le "" ]];then
echo "Ok.Your grade is C."
elif [[ "$x" -ge "" && "$x" -le "" ]];then
echo "Yeah,Your grade is D."
elif [[ "$x" -lt "" ]];then
echo "Right,Your grade is F."
else
echo "Unknow argument...."
fi

执行结果:

[root@lovelace if]# ./grade.sh
Please input your grade:
You don't input your grade....
[root@lovelace if]# ./grade.sh
Please input your grade:
Right,Your grade is F.
[root@lovelace if]# ./grade.sh
Please input your grade:
Good,Your grade is B.

以上为参考网上资料,

附原文连接:http://blog.51cto.com/lovelace/1211353

if 语句中的判断的更多相关文章

  1. if语句中的判断条件(nginx)

    if语句中的判断条件   正则表达式匹配:     ==:等值比较;     ~:与指定正则表达式模式匹配时返回"真",判断匹配与否时区分字符大小写:     ~*:与指定正则表达 ...

  2. Nginx中if语句中的判断条件

    一.if语句中的判断条件(nginx) 1.正则表达式匹配: ==:等值比较; ~:与指定正则表达式模式匹配时返回“真”,判断匹配与否时区分字符大小写: ~*:与指定正则表达式模式匹配时返回“真”,判 ...

  3. javascript中 if条件语句中的判断条件类型总结

    在所有编程语言中if是最长用的判断之一,但在js中到底哪些东西可以在if中式作为判断表达式呢? 例如如何几行,只是少了一个括号,真假就完全不同,到底表示什么含义呢 var obj={}; obj.Fu ...

  4. if语句中同时判断多个条件的多种方法

    总结一下自己经常用到的python中的if语句同时判断多个条件的不同方法,假设有: x, y, z = 0, 1, 0 方法一,多个逻辑运算符一起使用,这也是最常用的写法: if x == 1 or ...

  5. 数字,字符串,逻辑比较在IF语句中的判断应用

    Shell  语言中的if条件 一.if的基本语法: if [ command ];then 符合该条件执行的语句 elif [ command ];then 符合该条件执行的语句 else 符合该条 ...

  6. Java规则之条件语句中做空判断时使用||和&&常犯的错误

    错误代码示例: public String bar(String string) { //error 1 if (string!=null || !string.equals("" ...

  7. sql中在查询语句中加判断,控制输出的内容

    Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...

  8. mysql 更新语句中加判断条件

    UPDATE loan_overdue_list l setl.type_status=(CASE WHEN l.overdue_days>(select c.overdue_one from ...

  9. 判断合同金额是否可以转整形和sql语句中添加条件语句

    主要用到sqlserver语句中的判断语法 if (min_hetonge.Length > 0 && int.TryParse(min_hetonge, out min)) s ...

随机推荐

  1. 移除Windows图标快捷方式小箭头

    以管理员身份运行cmd,输入 reg delete "HKEY_CLASSES_ROOT\lnkfile" /v IsShortcut /f & taskkill /f / ...

  2. 爬虫基础(四)-----MongoDB的使用

    ------------------------------------------------------------------------摆脱穷人思维 <四> :减少无意义的频繁决策 ...

  3. 三十、小程序解析HTML(对富文本返回数据的处理)

    1.首先需要下载插件wxParse 下载地址 https://github.com/ZCLegendary/WXNews 百度云盘有保存 WXML <import src="../.. ...

  4. iview inoput type=textarea 禁止拉伸

    设置 :maxRows.minRows相同即可 <Input v-model="formValidate.remark" type="textarea" ...

  5. WEB通知和React Native之即时通讯(iOS Android)

    WEB通知和React Native之即时通讯(iOS Android) 一,需求分析 1.1,允许服务器主动发送信息给客户端,客户端能监听到并且能接收. 1.2,为了方便同一个系统内的用户可以指定某 ...

  6. [转帖]UTC时间、GMT时间、本地时间、Unix时间戳

    UTC时间.GMT时间.本地时间.Unix时间戳 https://www.cnblogs.com/xwdreamer/p/8761825.html 引用: https://blog.csdn.net/ ...

  7. Java基础:Java简介及安装配置(1)

    Java简介 Java是Sun公司于1995年推出的高级编程语言,具有跨平台特性,编译后的程序能够运行在多种类型的操作系统平台上. 1.1 Java应用程序版本 Java的3个独立用于开发不同类型应用 ...

  8. js实现一键导出Excel

    演示地址:https://xibushijie.github.io/static/ExportToExcel.html <!DOCTYPE html> <html lang=&quo ...

  9. [模板] 区间mex && 区间元素种数

    区间mex 问题 给定序列\({a_i}\), 每次询问给出\(l\), \(r\), 询问 \(\text{mex} \{a_i\}, i \in \{l, l+1, \cdots r\}\) 解法 ...

  10. tornado自定义session

    这开始之前我们先了解以下什么是cookie和session 简单的说: cookie是保存在客户端的键值对 session是保存在服务端的键值对 session依赖与cookie 在Django中,可 ...