Shell基础-day3-条件测试

0,条件测试里面有3类:文件测试、数值比较、字符串比较

1,test 条件表达式

      注意,这个语法不会返回错误,只会返回相应的值,具体例子见下面的图片。test -d /home 判断目录/home是否存在,存在返真,不存在返回假。

      下面脚本的含义是,如果目录/var/mysql_back不存在,则创建该目录。

#!/usr/bin/bash
back_dir=/var/mysql_back
if ! test -d $back_dir; then
    mkdir -p $back_dir
fi

2,[条件表达式]

      需要注意的是,[ -d /home ]和test -d /home的功能是完全一样的,不同的test后面直接跟表达式就可以,而[]的左方括号是测试的命令(注意[是一个命令),右方括号]是[方括号所必须的参数。其实记住[条件表达式]是测试的作用就可以了。

     文件测试 [ \d 目录 ]  测试目录是否存在

     数值比较 [ $变量名 -eq|-ne 0 ]  -eq 测试前面的变量等于0, -ne 测试前面的变量不等于0

     字符串比较 [ $变量名 == 字符串] 测试判断变量名是否等于字符串

3,[[条件表达式]]

      和[表达式]类似。[[]]和[]两个语句并、或运算时的语法是不相同的。[ 语句1 -a 语句2] [[ 语句1 && 语句2]] 测试语句1和语句2是真的?[ 语句1 -o 语句2] [[ 语句1 || 语句2]] 测试语句1和语句2是有一个是真的?

4,文件测试

      [ -e dir|file ]  测试指定目录或者文件是否存在 

      [ -d dir ]  测试指定目录是否存在

      [ -f file ]  测试文件是否存在

      [ -r file ]  测试当前用户对该文件是否有读权限

      [ -x file ]  测试当前用户对该文件是否有执行权限

      [ -w file ]  测试当前用户对该文件是否有写权限

      [ -L file ]  测试后面的文件是否是连接

5,数值比较

      [ $A -gt 10 ]  测试A是否大于10

      [ $A -lt 10 ]  测试A是否小于10

      [ $A -eq 10 ]  测试A是否等于10

      [ $A -ne 10 ]  测试A是否不等于10

      [ $A -ge 10 ]  测试A是否大于等于10

      [ $A -le 10 ]  测试A是否小于等于10

      注意,上面这种语法可能不好记,可以使用c风格的语法。使用(()),在小括号中执行判断语句即可。

6,字符串比较

     提示:使用双引号

     比如命令[ "$USER" == "root" ]; echo $? 的含义是如果当前用户是root,输出0,否则输出1。这里需要注意的是如果前面的命令写成[ $USER == root ] 这样的话有可能会报语法错误,所以要习惯使用“”把字符串变量引起来,这样可以避免不必要的麻烦。

     [ -z "$var" ] 测试变量var的长度是0?

     [ -n ''$var" ] 测试变量var的长度不是0?

命令总结:

    id 用户名;返回的是用户的信息,如果没有这个用户,自然会报错。

    bash -n .sh文件;检查这个脚本文件的语法。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值