shellNote--day5

shellNote

day5

  • if-then

    if command
    then
    	conmmands
    fi
    

    if后面的命令,退出状态码是0,表示运行成功,然后then部分的命令被执行;

  • if-then-else

    if command
    then
    	commands
    else
    	commands
    fi
    

    if中的命令返回退出状态码0时,then中的命令被执行;

    if中的命令返回退出状态码非0时,else中的命令被执行;

  • 嵌套if

    if command1
    then
    	commands
    elif command2
    then
    	commands
    fi
    
    

    elif相当于在else if;

  • test命令

    提供在if-then中测试不同条件,条件成立,test退出返回0;

    test condition

    condition是test要测试的一系列参数和值;

    if test condition
    then
    	commands
    fi
    

    另外一种条件测试方式,无需声明test命令,利用方括号来进行测试条件;

    if [ condition ]
    then
    	commands
    fi
    

    注意: 第一个方括号之后和第二个方括号之前必须加上一个空格;

    test命令可以判断三类条件:数值比较,字符串比较,文件比较;

  • 数值比较

    数值条件测试可以用于数值和变量上;

    不支持浮点型比较;

比较描述
n1 -eq n2检查n1是否与n2相等
n1 -ge n2检查n1是否大于或等于n2
n1 -gt n2检查n1是否大于n2
n1 -le n2检查n1是否小于或等于n2
n1 -lt n2检查n1是否小于n2
n1 -ne n2检查n1是否不等于n2
  • 字符串比较
比较描述
str1 = str2检查str1是否和str2相同
str1 != str2检查str1是否和str2不同
str1 < str2检查str1是否比str2小(根据ASCII顺序比较)
str1 > str2检查str1是否比str2大
-n str1检查str1的长度是否非0
-z str1检查str1的长度是否为0
  • 文件比较
比较描述
-d file检查file是否存在并是一个目录
-e file检查file是否存在
-f file检查file是否存在并是一个文件
-r file检查file是否存在并可读
-s file检查file是否存在并非空
-w file检查file是否存在并可写
-x file检查file是否存在并可执行
-O file检查file是否存在并属当前用户所有
-G file检查file是否存在并默认组与当前用户相同
file1 -nt file2检查file1是否比file2新
file1 -ot file2检查file1是否比file2旧
  • 复合条件测试

    • [ condition1 ] && [ condition2 ]

      两个条件满足,则then部分执行;

    • [ condition1 ] || [ condition2 ]

      任意条件满足,则then部分执行;

  • 使用双括号

    (( expression ))

    双括号允许比较过程中使用高级数学表达式;

    除了test中的标准数学运算符,还可以使用:

      ++, --,!(逻辑求反),~(位求反),**(幂运算),<<(左位移),>>(有位移),&(按位与),|(按位或),&&(逻辑与),||(逻辑或);
    

    双括号可以在if中使用,也可以在普通命令中来使用赋值;

  • 使用双方括号

    [[ expression ]]

    双方括号针对字符串提供高级特性;

    除了test标准比较外,还可以使用模式匹配,可以使用正则表达式来匹配字符串;

  • case

    case variable in
    pattern1 | pattern2) command1;;
    pattern3) command2;;
    *) default commands;;
    esac
    

    case命令会将指定的变量与不同模式进行比较,如果匹配,那么就会执行下面的命令,可以通过竖线操作符在一行中分隔出多个模式,*号会捕捉所有与已知不匹配的值;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值