http://blog.51cto.com/lovelace/1211353

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 90 -o $x -lt 100 ]
case $x in
100)
9[0-9])

if [ "X$name" != "x" ]
这个语句的意思是如果$name为空,那么X=X成立折执行下面的结果;

写脚本的时候很多时候需要用到回传命令,$?如果上一个命令执行成功,回传值为0,否则为1~255之间的任何一个
    0为真
    非0为假

条件测试的写法:

1、  执行一个命令的结果
                   if grep -q "rm" fs.sh;then

2、传回一个命令执行结果的相反值
                   if !grep -q "rm" fs.sh;then

3、使用复合命令((算式))
                   if ((a>b));then

4、使用bash关键字 [[判断式]]
                   if [[ str > xyz ]];then

5、使用内置命令:test 判断式
                   if test "str" \> "xyz";then

6、使用内置命令:[判断式]  类似test
                  if [ "str" \> "xyz" ];then

7、使用-a -o进行逻辑组合
                  [ -r filename -a -x filename ]

8、命令&&命令
                  if grep -q "rm" fn.sh && [ $a -lt 100 ];then

9、命令||命令
                 if grep -q "rm" fn.sh || [ $a -lt 100 ];then

示例脚本(

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

成绩(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 5
fi
#jugement the gread level
if [[ "$x" -ge "90" && "$x" -le "100" ]];then
echo "Congratulation,Your grade is A."
elif [[ "$x" -ge "80" && "$x" -le "89" ]];then
echo "Good,Your grade is B."
elif [[ "$x" -ge "70" && "$x" -le "79" ]];then
echo "Ok.Your grade is C."
elif [[ "$x" -ge "60" && "$x" -le "69" ]];then
echo "Yeah,Your grade is D."
elif [[ "$x" -lt "60" ]];then
echo "Right,Your grade is F."
else
echo "Unknow argument...."
fi

bash中的case when

linux中有和java中类似的case when条件,一看下面的代码就知道

#!/bin/bash
echo 'Input a number:'
read Num
case $Num in
1) 
echo "You select 1"
;;
2)
echo "You select 2"
;;
3)
echo "You select 3"
;;
4|5)
echo "You select 4or5"
;;
*)
echo "default"
;;
esac
#!/bin/bash

####输入1===输出10

case $1 in
1)
echo "您输入的是1"
;; 10)
echo "您输入的是10"
;; 100)
echo "您输入的是100" ;; *)
echo "您输入不正确哟"
;; esac  

  

1.条件xx)注意单括号

2.一个条件结束了用双的分号

3.最终退出用esac 

bash Shell 中如何实现条件判断之if判断的更多相关文章

  1. linux Shell中常用的条件判断

    linux Shell中常用的条件判断 -b file            若文件存在且是一个块特殊文件,则为真 -c file            若文件存在且是一个字符特殊文件,则为真 -d ...

  2. bash shell中测试命令

    bash shell中测试命令 test命令提供了if-than语句中测试不同条件的途径.如果test命令中列出的条件成立,test命令就会退出并返回退出状态吗0 .这样if-than语句就与其他编程 ...

  3. Bash shell中的位置参数$#,$*,$@,$0,$1,$2...及特殊参数$?,$-等的含义

    http://hi.baidu.com/lolorosa/blog/item/5775a608bd670d33b0351da7.html $# 是传给脚本的参数个数 $@ 是传给脚本的所有参数的列表 ...

  4. Bash Shell中Shift用法分享

    这篇文章主要介绍了Bash Shell中Shift的使用方法,需要的朋友可以参考下 shift可以用来向左移动位置参数.Shell的名字 $0第一个参数 $1第二个参数 $2第n个参数 $n所有参数 ...

  5. Bash Shell中的特殊位置变量及其应用

    Bash Shell中的特殊位置变量及其应用 众所周知bash shell中有许多特殊的位置变量,灵活使用它们可以更好地发挥Shell脚本的功用. 即位置变量:$1,$2,...来表示,用于让脚本在脚 ...

  6. shell编程学习笔记(八):Shell中的if条件判断

    编程语言中都有条件判断,shell编程也不例外,下面我们来看一下shell中应该怎么使用if条件判断 以下蓝色字体部分为Linux命令,红色字体的内容为输出的内容: # cd /opt/scripts ...

  7. linux bash shell中case语句的实例

    本文介绍下,在bash shell编程中,有关case语句的一个例子,学习下case语句的用法,有需要的朋友参考下. 本文转自:http://www.jbxue.com/article/13377.h ...

  8. 【转】Bash Shell中命令行选项/参数处理

    原文网址:http://www.cnblogs.com/FrankTan/archive/2010/03/01/1634516.html 0.引言 写程序的时候经常要处理命令行参数,本文描述在Bash ...

  9. Bash Shell中命令行选项/参数处理

    0.引言 写程序的时候经常要处理命令行参数,本文描述在Bash下的命令行处理方式. 选项与参数: 如下一个命令行: ./test.sh -f config.conf -v --prefix=/home ...

随机推荐

  1. [LeetCode] 331. Verify Preorder Serialization of a Binary Tree_Medium tag: stack

    One way to serialize a binary tree is to use pre-order traversal. When we encounter a non-null node, ...

  2. How to enable TLS 1.2 on Windows Server 2008 R2

    Problem How to enable TLS 1.2 on Windows Server 2008 R2? Resolution QuoVadis recommends enabling and ...

  3. Jmeter CSV Data Set Config参数化

    在使用Jemeter做压力测试的时候,往往需要参数化用户名,密码以到达到多用户使用不同的用户名密码登录的目的.这个时候我们就可以使用CSV Data Set Config实现参数化登录: 首先通过Te ...

  4. C# 查看所有的隐藏文件

    方法1 通过 位与 static void Main(string[] Args)        { //假设扫描C:\Test中—— string[] hiddenfiles = Directory ...

  5. 翻译[RFC6238] TOTP: Time-Based One-Time Password Algorithm

    在闲暇时间做了一个TOTP相关的开源项目,在项目初步完成之余,我尝试对[RFC6238]文档进行了翻译,供大家参考与查阅,若有不妥之处,还望各位前辈海涵斧正. [RFC6238] : Time-Bas ...

  6. ADO.NET知识学习总结

      1. 概述 使用的命名空间: System.Data.SqlClient 连接字符串    服务器/数据库实例+数据库名称+安全信息+用户名+密码  可参考http://www.connectio ...

  7. Spring整合ActiveMQ:spring+JMS+ActiveMQ+Tomcat

    一.目录结构 相关jar包 二.关键配置activmq.xml <?xml version="1.0" encoding="UTF-8"?> < ...

  8. CSS3----实现毛玻璃完美效果

    其实毛玻璃的模糊效果技术上比较简单,只是用到了 css 滤镜(filter)中的 blur 属性.但是要做一个好的毛玻璃效果,需要注意很多细节. 比如我们需要将上图中页面中间的文字区域变成毛玻璃效果, ...

  9. Linux中Postfix邮件原理介绍(一)

    邮件相关协议 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议, 工作在TCP的25端口.它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式 ...

  10. win10锁屏界面无法更新

    win10的锁屏界面都是巨硬公司推送过来的,质量还不错,最近锁屏界面无法更新,解决方案如下: 以管理员身份运行cmd,分别运行如下两个命令 del /f /s /q /a "%userpro ...