linux之if语句详解

if语句常用命令选项:

a == b	a与b是否相等 (a、b是数值)
a -ge b	a 是否大于等于 b
a -gt b	a 是否大于 b
a -le b	a 是否小于等于 b
a -lt b	a 是否小于 b
a -ne b	a 是否不等于 b
str1 = str2 str1是否与str2相同(str1、str2是字符串)
str1 != str2	str1是否与str2不同
str1 < str2	str1是否小于str2
str1 > str2	str1是否da于str2
-n str 判断str长度是否非零
-z str 	str长度是否为0
-d file	判断file是否为目录
-e file	判断file是否存在
-f file	检查file是否为文件
-r file	判断文件是否可读
-s file	判断file是否存在并非空
-w file	判断file是可写
-x file	判断file是可执行

语法:
1,单分支语句结构

if [ 条件表达式 ]; then
    指令
fi

2,双分支语句结构

if [ 条件表达式 ]; then
    指令一
else
    指令二
fi

示例:

#!/bin/bash
a=$1
b=$2
if [ $a == $b ];then
   echo "a and b is equal"    
else
   if [ $a -lt $b ];then
       echo "a less than b"        
   else
      echo "a bigger than b"        
   fi
fi


逻辑运算符运用:
1,&& 表示与

2,||表示或
在[  ]中不能用&&  ||

3,[]之间使用逻辑运算符:
-a 与 
-o 或 
! 非

示例:

if [ $score -ge 0 -a $score -lt 60 ];then
    echo "sorry,you are lost!"
elif [ $score -ge 60 -a $score -lt 85 ];then
    echo "just soso!"
elif [ $score -le 100 -a $score -ge 85 ];then
    echo "good job!"
else
    echo "input score is wrong , the range is [0-100]!" 
fi

#linux使用if判断文件是否存在
#这里的-f参数判断/home/abc.log是否存在

if [ -f "/home/abc.log" ]; then  
  echo "文件存在"
else
    echo "文件不存在"
fi


 

  • 13
    点赞
  • 121
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ioctl函数是Linux系统中用于设备控制的函数,它可以用来向设备发送控制命令,或者获取设备状态信息等。 ioctl函数的原型如下: ```c int ioctl(int fd, unsigned long request, ...); ``` 其中,fd表示设备文件描述符,request表示设备控制命令,后面的可变参数用于传递控制命令的参数。 request参数一般是一个32位的整数,由四个部分组成: ```c ioctl命令 = (魔数 << 8) | 命令序号 | 方向 | 大小 ``` 其中,魔数是一个16位的数,用于标识该ioctl命令所属的设备类型;命令序号是一个8位的数,用于标识该ioctl命令的具体含义;方向用于表示该ioctl命令是读操作还是写操作;大小用于表示该ioctl命令的参数大小。 例如,下面是一个ioctl命令: ```c #define MY_IOCTL _IOW('k', 1, int) ``` 其中,'k'是魔数,1是命令序号,_IOW表示该ioctl命令是写操作,int表示该ioctl命令参数的大小。 在应用程序中调用ioctl函数时,需要传入一个指向控制命令参数的指针,如下: ```c int val = 10; ioctl(fd, MY_IOCTL, &val); ``` 在设备驱动中,可以通过switch语句来处理ioctl命令,如下: ```c long my_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { int val; switch (cmd) { case MY_IOCTL: if (copy_from_user(&val, (int __user *)arg, sizeof(val))) return -EFAULT; // 处理MY_IOCTL命令 break; // 处理其他命令 default: return -ENOTTY; } return 0; } ``` 其中,copy_from_user函数用于将用户空间中的数据拷贝到内核空间,sizeof(val)表示拷贝的数据大小。处理完命令后,需要返回0代表成功,或者返回一个负数代表错误。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水月清辉

你的鼓励将是我创造的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值