Shell 脚本进阶,经典用法详解及其案例【条件选择判断、循环语句 您所在的位置:网站首页 最好看的字符 Shell 脚本进阶,经典用法详解及其案例【条件选择判断、循环语句

Shell 脚本进阶,经典用法详解及其案例【条件选择判断、循环语句

2024-04-01 16:24| 来源: 网络整理| 查看: 265

#判断年纪

#!/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

用法格式 方式1

for name in 列表 ;do

循环体

done

方式2

for (( 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视频、面试题和技术文档

祝大家早日进入大厂,拿到满意的薪资和职级~~~加油!!

感谢大家的支持!!

image.png

img



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有