前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实验(九)Shell 循环结构、函数

实验(九)Shell 循环结构、函数

原创
作者头像
esse LL
修改2023-05-01 18:18:10
1.2K0
修改2023-05-01 18:18:10
举报
文章被收录于专栏:操作系统实验操作系统实验

1. 新建工作目录

目录命名为班级加姓名的格式,如 1banz3

参考代码:

代码语言:shell
复制
mkdir 1banz3
# 切到 1banz3 目录:
cd 1banz3

2. for 循环结构

新建 for.sh 脚本,输入以下代码:

代码语言:shell
复制
#!/bin/bash
for day in sunday monday tuesday wednesday thusday friday saturday
do 
	echo "the days is : $day"
done
for((i=1;i<5;i++))
do 
	echo "the values is : $i"
done

其中,第一个for语句表示使变量day遍历in列表中的每一个值,执行循环体,也就是依次打出列表中每一种情况。

第二个for语句与C语言的用法类似,确定了变量i从1开始,每次自增1,到4结束,执行了4次循环体。Shell中,for循环结构使用的是双圆括号。

解释运行脚本,参考运行结果如下:

代码语言:text
复制
the days is : sunday
the days is : monday
the days is : tuesday
the days is : wednesday
the days is : thusday
the days is : friday
the days is : saturday
the values is : 1
the values is : 2
the values is : 3
the values is : 4

3. while 循环结构

新建 while.sh 脚本,输入以下代码:

代码语言:shell
复制
#!/bin/bash
n=1
while [ "$n" -lt 10 ]
do 
	echo $n
	n=$((n+2))
done

while循环使用了条件测试语句作为循环条件,变量 n<10 时重复循环体语句,也就是打出n的当前值,并随后令 n=n+2

解释运行脚本,参考运行结果如下:

代码语言:text
复制
1
3
5
7
9

4. until 循环结构

新建 until.sh 脚本,输入以下代码:

代码语言:shell
复制
#!/bin/bash
read -p "press y/Y to stop..." input
until [ "$input" = "Y" -o "$input" = "y" ]
do 
	read -p "error input, please try again..." input
done
echo "stop here"

在条件测试语句中,比较字符串可以简单的使用等号作为运算符,需要注意的是等号和左右字符串需要用空格隔开。

until 表示判断结果为true(也就是退出状态为0)时,退出循环,否则重复循环体语句。

解释运行脚本,参考运行结果如下:

代码语言:text
复制
press y/Y to stop...1
error input, please try again...2
error input, please try again...3
error input, please try again...x
error input, please try again...y
stop here

5. break 和 continue

新建 BreakContinue.sh 脚本,输入以下代码:

代码语言:shell
复制
#!/bin/bash
i=1
for day in Mon Tue Wed Thu Fri
do 
	echo "Weekday $((i++)):$day"
	if [ $i -eq 3 ]; then
		break
	fi
done
i=1
for day in Mon Tue Wed Thu Fri Sat Sun
do 
	echo -n "Day $((i++)):$day"
	if [ $i -eq 7 -o $i -eq 8 ]; then
		echo "(WEEKEND)"
		continue
	fi
	echo "(weekday)"
done

第一个for循环中,变量i值为3时,执行break语句退出循环。

第二个for循环中,变量i值7或8时,输出(WEEKEND),执行continue,跳过continue下方的语句,直接进入下一次循环。

解释运行脚本,参考运行结果如下:

代码语言:text
复制
Weekday 1:Mon
Weekday 2:Tue
Day 1:Mon(weekday)
Day 2:Tue(weekday)
Day 3:Wed(weekday)
Day 4:Thu(weekday)
Day 5:Fri(weekday)
Day 6:Sat(WEEKEND)
Day 7:Sun(WEEKEND)

6. 函数

新建 func.sh 脚本,输入以下代码:

代码语言:shell
复制
#!/bin/bash
function func()
{
	if [ $# -eq 2 ]
	then
		x=$(($1+$2))
	else
		echo "The number of parameters is not correct"
	fi
	echo "$1+$2=$x"
}
func 10 90

条件测试语句中,$#是Shell预定义变量,表示运行命令时的参数个数,当参数个数为2时,测试结果为true,执行then中的语句,令 x=参数1+参数2 ;否则,测试结果为false,执行else中的语句,打印一行提示信息。

解释运行脚本,参考运行结果如下:

代码语言:text
复制
10+90=100

也可以修改脚本中最后一行的函数调用语句,使其计算命令后跟的两个参数的值:

代码语言:shell
复制
func $1 $2

解释运行脚本,参数1和2分别是9999和8888,运行结果如下:

代码语言:text
复制
9999+8888=18887

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 新建工作目录
  • 2. for 循环结构
  • 3. while 循环结构
  • 4. until 循环结构
  • 5. break 和 continue
  • 6. 函数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档