1. 新建工作目录
目录命名为班级加姓名的格式,如 1banz3
参考代码:
代码语言:shell复制mkdir 1banz3
# 切到 1banz3 目录:
cd 1banz3
2. for 循环结构
新建 for.sh
脚本,输入以下代码:
#!/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
脚本,输入以下代码:
#!/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
脚本,输入以下代码:
#!/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
脚本,输入以下代码:
#!/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
脚本,输入以下代码:
#!/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