新浪博客

Shell脚本进阶,经典用法及其案例

2022-05-27 20:08阅读:

一、条件选择、判断

1、条件选择if
1)用法格式
if 判断条件 1 ; then
条件为真的分支代码
elif 判断条件 2 ; then
条件为真的分支代码
elif 判断条件 3 ; then
条件为真的分支代码
else
以上条件都为假的分支代码
fi

逐条件进行判断,第一次遇为“真”条件时,执行其分支,而后结束整个if。
2)经典案例:
#判断年纪
#!/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

1)案例:
#判断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
for (( exp1; exp2; exp3 )) ;do
cmd
done

图片
exp1只执行一次,相当于在for里嵌了while

执行机制:
依次将列表中的元素赋值给“变量名”; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束
列表的表示方法,可以glob 通配符,如{1..10} 、*.sh ;也可以变量引用,如:seq 1 $name
2)案例
#求出(1+2+...+n)的总和
sum=0

我的更多文章

下载客户端阅读体验更佳

APP专享