shell的条件语句

条件测试

文件测试

用于检测目录文件

  • [ -d /etc/ ] 检测是否是个目录
  • [ -e /etc/ ] 检测是否存在
  • [ -f /etc/ ] 检测这个文件是否存在
  • [ -r /etc/ ] 检测此文件或目录是否有读的权限
  • [ -w /etc/ ] 检测此文件或目录是否有写的权限
  • [ -x /etc/ ] 检测此文件或目录是否有执行的权限

整数值比较

  • [ 1 -eq 1 ] 数字用-eq来表示等于
  • -ne 表示不等于
  • -lt 表示小于
  • gt 表示大于
  • ge 表示大于等于
  • le 表示小于等于

字符串比较

  • [ a ==b ] 表示a等于b
  • [ a !=b ] 表示a不等于b
  • [ -z a ] 检测变量是否为空通常后面跟&& echo y || echo n来返回结果
  • [ -n a ] 检测变量是否为非空通常后面跟&& echo y || echo n来返回结果

逻辑测试

  • [ 3 -gt 2 -a 3 -gt 1 ] && echo y || echo n 其中-a是且的意思,可以换成&&
  • [ 3 -gt 2 -o 3 -gt 1 ] && echo y || echo n 其中-o是或的意思,可以换成||

if语句

单分支的if语句

顾名思义,就是只有一条路

#!/bin/bash    //声明解释器
a=10			//赋值
b=20
if [ $a -lt $b ];then		//a,b比较然后执行then后面命令,这里a小于b
echo "a小"					//输出a小字样
fi							//开头结尾成对
[root@localhost ~]# bash 123.sh
a小

双分支的if语句

有两条执行的路

#!/bin/bash
a=10					
b=20
if [ $a -gt $b ];then				判断a是否比b大,如果是,就执行then后面的,否则就执行else后面的
echo "a大"
else
echo "b大"
fi
[root@localhost ~]# bash 123.sh
b大						//此时是执行else后面的

多分支的if语句

多条分支来判断,当第一条不匹配时,去匹配下一条,直到匹配成功

#!/bin/bash
a=10
b=20
c=5
if [ $b -lt $a ];then 				//b比a大,所以往下继续匹配
echo "a小"
elif [ $a -lt $c ];then				//c比a小,所以输出的c小
echo "a小"
else
echo "c小"
fi
[root@localhost ~]# bash 123.sh
c小

小实验

测试某个ip是否能通信

#!/bin/bash
#测试某个ip是否能ping通
read -p "请输入ip地址:" ip
ping -c 3 $ip &> /dev/null		//将输出的信息丢入回收站
if [ $? -eq 0 ]					$? 返回上一条命令的执行结果,成功为0,失败为非0
then  echo "is up" 
else
 echo "is down" 
fi
[root@localhost ~]# bash 3.sh 
请输入ip地址:192.168.3.1
is up

判断当前用户是否为管理员

#!/bin/bash
#判断当前用户是否为管理员
id $USER | grep root &> /dev/null
if [ $? -eq 0 ]
then echo "是管理员"
elif [ $? -ne 0 ]
then
id $USER | grep wheel &> /dev/null 		
if [ $? -eq 0 ]
then echo "是管理员"
else echo "不是管理员"
fi
fi
[root@localhost ~]# bash 4.sh 
是管理员
[zhangsan@localhost ~]$ bash /root/4.sh 
不是管理员

查找用户是否存在,不存在就创建此用户并设置密码

#!/bin/bash
#查找用户是否存在,不存在就创建此用户并设置密码
read -p "请输入用户名:" user
id $user
if [ $? -eq 0 ]
then  echo "此用户已存在" 
else
read -p "请设置密码:" pass
pass=$pass
 useradd $user
 echo "$pass" | passwd --stdin $user
fi
[root@localhost ~]# bash 5.sh 
请输入用户名:wwwww
id: wwwww: no such user
请设置密码:123
更改用户 wwwww 的密码 。
passwd:所有的身份验证令牌已经成功更新。
请输入用户名:zhangsan
uid=1004(zhangsan) gid=1004(zhangsan)=1004(zhangsan)
此用户已存在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值