Shell 脚本进阶,经典用法详解及其案例【条件选择判断、循环语句 | 您所在的位置:网站首页 › 最好看的字符 › Shell 脚本进阶,经典用法详解及其案例【条件选择判断、循环语句 |
#判断年纪 #!/bin/bash read -p "Please input your age: " age if [[ $age =~ [^0-9] ]] ;then echo "please input a int" exit 10 elif [ $age -ge 150 ];then echo "your age is wrong" exit 20 elif [ $age -gt 18 ];then echo "good good work,day day up" else echo "good good study,day day up" fi 分析:请输入年纪,先判断输入的是否含有除数字以外的字符,有,就报错;没有,继续判断是否小于150,是否大于18。 经典案例:判断分数#判断分数 #!/bin/bash read -p "Please input your score: " score if [[ $score =~ [^0-9] ]] ;then echo "please input a int" exit 10 elif [ $score -gt 100 ];then echo "Your score is wrong" exit 20 elif [ $score -ge 85 ];then echo "Your score is very good" elif [ $score -ge 60 ];then echo "Your score is soso" else echo "You are loser" fi 分析:请输入成绩,先判断输入的是否含有除数字以外的字符,有,就报错;没有,继续判断是否大于100,是否大于85,是否大于60。2、条件判断 case (1)用法格式case $name in; PART1) cmd ;; PART2) cmd ;; *) cmd ;; esac 注意:case 支持glob 风格的通配符:*: 任意长度任意字符 ?: 任意单个字符 [ ] :指定范围内的任意单个字符 a|b: a 或b 经典案例:判断yes or no#判断yes or no #!/bin/bash read -p "Please input yes or no: " anw case $anw in [yY][eE][sS]|[yY]) echo yes ;; [nN][oO]|[nN]) echo no ;; *) echo false ;; esac 分析:请输入yes or no,回答Y/y、yes各种大小写组合为yes;回答N/n、No各种大小写组合为no。 二、四个循环 ===================================================================== 1、for 用法格式 方式1for name in 列表 ;do 循环体 done 方式2for (( exp1; exp2; exp3 )) ;do cmd done 图片exp1只执行一次,相当于在for里嵌了while 执行机制 依次将列表中的元素赋值给“变量名”; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束列表的表示方法,可以glob 通配符,如{1…10} 、*.sh ;也可以变量引用,如:seq 1 $name 经典案例:求出(1+2+…+n)的总和#求出(1+2+...+n)的总和 sum=0 read -p "Please input a positive integer: " num if [[ $num =~ [^0-9] ]] ;then echo "input error" elif [[ $num -eq 0 ]] ;then echo "input error" else for i in seq 1 $num ;do sum=[[[sum+$i] done echo $sum fi unset zhi 分析:sum初始值为0,请输入一个数,先判断输入的是否含有除数字以外的字符,有,就报错;没有判断是否为0,不为0进入for循环,i的范围为1~输入的数,每次的循环为sum=sum+i,循环结束,最后输出sum的值。#求出(1+2+...+100)的总和 for (( i=1,num=0;i /dev/null shift done fi 分析:如果没有输入参数(参数的总数为0),提示错误并退出;反之,进入循环;若第一个参数不为空字符,则创建以第一个参数为名的用户,并移除第一个参数,将紧跟的参数左移作为第一个参数,直到没有第一个参数,退出。 经典案例:打印直角三角形的字符#②打印直角三角形的字符 #!/binbash while (( $# > 0 )) do echo "$*" shift done 3、返回值结果 true 永远返回成功结果 null command,什么也不干,返回成功结果 false 永远返回错误结果 创建无限循环while true ;do 循环体 done 4、循环中可并行执行,使脚本运行更快 用法for name in 列表 ;do { 循环体 }& done wait 经典实例:搜寻自己指定ip(子网掩码为24的)的网段中,UP的ip地址 最后这份清华大牛整理的进大厂必备的redis视频、面试题和技术文档 祝大家早日进入大厂,拿到满意的薪资和职级~~~加油!! 感谢大家的支持!! |
CopyRight 2018-2019 实验室设备网 版权所有 |