Shell编程之case语句与循环语句
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell编程之case语句与循环语句相关的知识,希望对你有一定的参考价值。
case多分支语句
循环语句
- for循环语句
- while循环语句
- untli循环语句
Shell函数
Shell数组
case语句的结构
- 针对变量的不同取值,分别执行不同的命令序列
case 变量值 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
......
*)
默认命令序列
esac
[root@localhost ~]# vim demo13.sh //编辑示例
#!/bin/bash
read -p "请输入一个字符:" a //交互指令
case $a in //编辑case语句
[a-z]|[A-Z]) //模式1
echo "输入的是字母" //输出提示信息
;;
[0-9]) //模式2
echo "输入的是数字" //输出提示信息
;;
*)
echo "输入的是特殊符号"
esac //结束语句
for语句结构
-
读取不同的变量值,用来逐个执行同一组命令
for 变量名 in 取值列表 do 命令序列 done
- 使用场景
- 指定次数循环 for(int i=0;i<=10;i++)
- 遍历循环(增强循环 foreach) for(int num:sum)
[root@localhost ~]# vim demo06.sh
#!/bin/bash
for ((i=1;i<=10;i++)) //循环条件
do
echo $i //输出i变量
done
[root@localhost ~]# vim aa.txt //创建txt文档
zhangsan
wangwu //输入信息
lisi
zhaoliu
~
:wq
[root@localhost ~]# vim demo07.sh //编辑循环脚本
#!/bin/bash
TMP=$(cat /root/aa.txt) //设置变量
for user in $TMP //编写循环
do
echo "用户是$user" //输出文档信息
done
while语句的结构
-
重复测试某个条件,只要条件成立则反复执行
while 条件测试操作 do 命令序列 done
[root@localhost ~]# vim demo10.sh
#!/bin/bash
num=1 //声明变量
while [ $num -le 10 ] //编辑while循环
do
echo $num //输出循环结果
let num++; //等同于num=`expr $num+1`
done
nutil语句结构
-
重复测试某个条件,只要条件不成立则反复执行
nutil 条件测试操作 do 命令序列 done
[root@localhost ~]# vim demo15.sh #!/bin/bash i=0 //设置赋值变量 s=0 until [ $i -eq 51 ];do //编辑until语句 let s+=i;let i++ //计算1-50的求和过程 done echo $s //输出求和数值
Shell函数
-
将命令序列按格式写在一起 (封装)
-
可方便重复使用命令序列
-
Shell函数定义
[function] 函数(){ 命令序列 [return x] //使用return或exit可以显示地结束函数 }
[root@localhost ~]# vim demo17.sh #!/bin/bash sum(){ //设置函数名 #命令序列 s=`expr 2 + 2` //编辑函数命令序列 echo $s //输出计算结果 } sum //调用输出函数
-
调用函数的方法
- 函数名 [参数1] [参数2]
[root@localhost ~]# vim demo18.sh
#!/bin/bash
sum(){
s=`expr $1 + $2` //使用位置变量计算
echo $s
}
sum 2 2 //函数名后添加位置变量
Shell数组
应用场景包括
- 获取数组长度
- 获取元素长度
- 遍历元素
- 元素切片
- 元素替换
- 元素删除
- ......
数组定义方法
-
方法一
数组名=(value0 value1 value2 ...)
-
方法二
数组名=([0]=value [1]=value [2]=value ...)
-
方法三
列表名="value0 value1 value2 ..."
数组名=($列表名)
-
方法四
数组名[0]="value"
数组名[1]="value"
数组名[2]="value"
数组包括的数据类型
-
数值类型
-
字符类型
使用""或‘‘定义
shell数组操作
获取数组长度
- ${#数组名[@/*]}
[root@localhost ~]# num=(11 22 33 44 55) //定义数组
[root@localhost ~]# len=${#num[*]} //数组长度赋值给len
[root@localhost ~]# echo $len //输出数组长度
5
读取某下标赋值
- ${数组名[下表]}
[root@localhost ~]# num=(11 22 33 44 55) //定义数组
[root@localhost ~]# a=${num[0]} //赋值数组下表
[root@localhost ~]# echo $a //输出下表
11
[root@localhost ~]# a=${num[1]}
[root@localhost ~]# echo $a
22
数组遍历
[root@localhost ~]# num=(11 22 33 44 55) //定义数组
[root@localhost ~]# for i in ${num[*]} //使用for循环遍历数组
> do
> echo $i //输出数组
> done
11
22
33
44
55
以上是关于Shell编程之case语句与循环语句的主要内容,如果未能解决你的问题,请参考以下文章