shell脚本--进阶

shell脚本–进阶

条件测试:
$?返回码
判断命令或者脚本是否执行成功(最近的一条)
0 true 为真就是成功 成立
非0 false 失败或者异常
test 命令可以进行条件测试,然后根据返回值来判断条件是否成立。
常用操作符
-e 测试文件或者目录是否存在 exist (只有-e可以既可以测试文件和目录)
-d 测试目录是否存在
-f 测试文件是否存在
-r 测试当前用户是否对文件或目录有读权限
-w 测试当前用户是否对文件或目录有写权限
-x 测试当前用户是否对文件或目录有执行权限

整数比较符(以下操作符只能用于整数比较
-eq 等于 ==(既可以比较整数,也可以比较字符串)
-ne 不等于 !=
-gt 大于 >
-lt 小于 <
-ge 大于等于 >=
-le 小于等于 <=

比较符的第二种
[ a = b ]

第三种格式:
[[ ]] 可以使用更高级的模式,可以使用正则表达式,使用字符串的时候可以不加引号。

第四种:
(( ))

逻辑与和逻辑或(多条件判断)
:&& 条件都要满足才成立 -a

单中括号
[root@test2 opt]# a=5
[root@test2 opt]# [ $a -ne 1 -a $a -ne 2 ]
[root@test2 opt]# echo $?
0
双中括号
[root@test2 opt]# [[ $a -ne 1 && $a -ne 2 ]]
[root@test2 opt]# echo $?
0

或:|| 有一个条件满足就成立 -o

[root@test2 opt]# [[ $a -ne 1 || $a -ne 2 ]]
[root@test2 opt]# echo $?
0

if语句

单分支结构
if  [ 3 -gt 2 ]
then 
  echo "ok"
fi
#if 后面是条件测试语句
#then 命令序列,只有条件测试语句成立,才会执行then的命令模块
#fi 结束语句。
双分支结构
if [ 3 -gt 5  ]
then
 echo "OK"
else
 echo "No"
fi
#条件满足执行then,不满足执行else,执行完毕,语句结束
#通过位置变量传参的方式,给脚本内部传一个ip地址
#如果ping不通,提示用户ip  is offline.
#ping的通的要提示用户ip is online,而且要保存到/opt/hosts.txt文件当中
ping -c 3 $1
if [  $? -eq 0 ]
then
 echo "ip is online"
 echo $1 >> /opt/hosts.txt
else 
 echo "ip is offline "
fi
#随机输入一个整数,read -p输入一个数
#判断这个数是偶数还是奇数,偶数提示偶数,奇数提示奇数
read -p "随机一个整数:" a
if [[ a%2 -eq 0 ]]
then
 echo  "偶数"
else
 echo "奇数"
fi
~    
多分支结构

多分支结构:哪个条件满足,执行哪个条件

#请输入您的分数,0-100
大于等于85,且小于等于100优秀
大于等于70,
且小于等于84
一般
大于等于60,且小于等于69 合格
小于60,30遍
read -p "请输入你的分数:" a
if [[ a -ge 85 && a -le 100 ]]
then
 echo "优秀"
elif [ $a -ge 70 -a $a -le 84 ]
then
 echo "一般"
elif [ $a -ge 60 -a $a -le 69 ]
then
 echo "合格"
else
 echo "抄30遍"
fi
~       
#num白定义输入,只有整数才可以进入到分数的区间。
#嵌套if
read -p "请输入你的分数:" a
if [[ a -eq a ]] &> /dev/null
then
   if [[ a -ge 85 && a -le 100 ]]
   then
    echo "优秀"
   elif [ $a -ge 70 -a $a -le 84 ]
   then
    echo "一般"
   elif [ $a -ge 60 -a $a -le 69 ]
   then
    echo "合格"
   else
    echo "抄30遍"
   fi
else
 echo "输入非法,不是整数"
fi

case语句

read -p "输入一个成绩:" a
[[ $a -ge 80 && $a -le 100 ]] && b="great"
[[ $a -ge 60 && $a -le 79 ]] && b="standard"
[[ $a -ge 0 && $a -le 59 ]] && b="false"

case $a in
great)
 echo "$a,优秀"
;;
stadnard)
 echo "$a 一般"
;;
false)
 echo "$a 及格"
;;
*)
 echo "菜就多练"
esac
  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

代码要你命

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

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

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

打赏作者

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

抵扣说明:

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

余额充值