shell脚本编程2

1,if判断

1.1 判断格式

单分支
if 判断表达式;then
执行的命令 #判断条件成立的情况下,执行这里的语句
fi

双分支

if 判断表达式;then
执行的命令 #判断条件成立的情况下,执行这里的语句
else
执行的命令 #判断条件不成立的情况下,执行这里的语句
fi

多分支

if 判断表达式1;then
执行的命令 #判断条件1成立的情况下,执行这里的语句
elif 判断表达式2;then
执行的命令 #判断条件2成立的情况下,执行这里的语句
elif 判断表达式3;then
执行的命令 #判断条件3成立的情况下,执行这里的语句
else
执行的命令 #判断条件都不成立的情况下,执行这里的语句
fi

1.2 判断对象

判断数字
     大小
     相等
     不相等
判断字符串
     相同
    不相同
判断文件
    判断文件类型
判断命令
    命令执行成功
    命令执行失败

1.3 判断数字

判断数字
     大小
    相等
    不相等
格式
[ 数字 判断符 数字 ]
判断符
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
-ne 不等于
-eq 等于
案例1:让用户输入两个数字,输出较大的数字
#!/bin/bash
read -p "请输入一个数字:" num1
read -p "请输入外一个数字:" num2
if [ $num1 -gt $num2 ];then
echo $num1
else
echo $num2
fi
案例2:让用户输入两个数字,判断两个数字的和是否大于100
#!/bin/bash
read -p "请输入一个数字:" num1
read -p "请输入外一个数字:" num2
sum=$[$num1+$num2]
if [ $sum -gt 100 ];then
echo "和大于100"
elif [ $sum -lt 100 ];then
echo "和小于100"
else
echo "等于100"
fi
案例3:让用户输入一个用户名,判断这个用户名是否存在
#!/bin/bash
read -p "请输入一个姓名:" userName
id $userName &>/dev/null
num=$?
if [ $num -eq 0 ];then
echo "$userName 存在的"
else
echo "$userName 不存在的"
fi

1.4 判断字符串

判断字符串
     相同
     不相同
= 赋值
判断符
== 判断相等
!= 判断不等
判断格式
[ 字符串1 判断符 字符串2 ]
案例:让用户输入一个用户名,判断这个用户名的shell类型是/bin/bash
#!/bin/bash
read -p "请输入用户名:" userName
grep "^$userName\>" /etc/passwd &>/dev/null
num=$?
if [ $num -ne 0 ];then
echo "你输入的用户名是 $userName,没有这个用户,再见."
exit 5 # 退出程序,返回一个数字5
fi

shellType=`grep "^$userName\>" /etc/passwd | awk -F ":" '{print $7}'`
if [ $shellType == "/bin/bash" ];then
echo "用户的shell类型是/bin/bash"
else
echo "用户的shell类型不是/bin/bash"
fi

1.5 组合条件

&& 逻辑与,要求多个条件要同时满足,则条件整体才是满足条件
|| 逻辑或,要求多个条件满足任意一个即认为整体条件是满足的
! 逻辑非,对条件进行取反
案例:让用户输出账号和密码,检查用户的输入,如果账号是root,并且密码是123321,则提示登录 成功,否则提示登录失败
#!/bin/bash
read -p "请输入账号:" userName
read -p "请输入密码:" userPass
if [ "a$userName" == "aroot" ] && [ "a$userPass" == "a123321" ];then
echo "ok"
else
echo "error"
fi
扩展
&& 可以依次执行多个命令
只有前面的命令执行成功,后面的才执行;如果前面的执行失败,后面的就不执行了
|| 可以依次执行多个命令
只有前面的命令执行失败,后面的命令才执行;如果前面的命令执行成功,后面就不执行了
1.6 判断文件
判断符
-a
-e 判断文件存在
-f 判断文就是一般文件
-d 判断文件是目录文件
格式
[ 判断符号 文件名 ]
案例:让用户输入一个文件,判断文件的类型
#!/bin/bash
read -p "请输入输入一个文件:" fileName
if [ -e $fileName ];then
if [ -f $fileName ];then
echo "这个文件是一般文件"
elif [ -d $fileName ];then
echo "这个文件是目录文件"
else
echo "我也不知道是个啥玩意"
fi
else
echo "no such file"
fi
案例:让用户输入一个文件,判断文件的类型,如果是一般文件,检查这个文件中是否有以#开头的行
#!/bin/bash

read -p "请输入输入一个文件:" fileName
if [ -e $fileName ];then
if [ -f $fileName ];then
grep "^#" $fileName &>/dev/null
num=$?
if [ $num -eq 0 ];then
echo "$fileName是一般文件,而且有#开头的行"
else
echo "$fileName是一般文件,没有#开头的行"
fi
elif [ -d $fileName ];then
echo "这个文件是目录文件"
else
echo "我也不知道是个啥玩意"
fi
else
echo "no such file"
fi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值