目录
1.if 控制语句
1.1 if 语句格式
1.2 程序验证
2.case语句
2.1case语句格式
2.2程序验证
2.2.1 终端先执行程序,在输入一个数
2.2.2 终端执行程序时同时输入一个预设变量
2.2.3 case带有按位或运算和通配符匹配
3.for语句
3.1for语句格式
3.2程序验证
3.2.1 for语句形式1-变量求和
3.2.2 for语句形式2-循环输出变量
3.2.3 for语句形式2-执行ls命令,循环判断该目录下的文件类型
(1)程序遍历输出该目录下的文件
(2)程序遍历判断该目录下的所有文件类型
4.while语句
4.1 while语句格式
4.2 程序验证
5.until语句
5.1 until语句格式
5.2 程序验证
6.break、continue
6.1 break
6.2 continue
1.if 控制语句
1.1 if 语句格式
1.2 程序验证
程序:
#!/bin/bashecho "please input a number >>> "
read NUM #读取键盘输入的数字#注意:赋值时,等号两边不能加空格
# []里面存放表达式时必须加空格echo " 判断 NUM 是否大于 50 "
#一般形式,程序只判断大于50的情况
if [ $NUM -gt 50 ];thenecho "NUM > 50"
fi # 结束标志echo " ------ "
#程序判断大于、小于等于50的情况
echo " 判断 NUM 是否大于 50 "
if [ $NUM -gt 50 ]
thenecho "NUM > 50"
elseecho "NUM <= 50"
fiecho " 阶梯形式: "#阶梯形式,只执行一个条件
if [ $NUM -gt 50 ]
thenecho "NUM > 50"elif [ $NUM -lt 50 ]
thenecho "NUM < 50"elseecho "NUM = 50"
fiecho " 嵌套形式: "
#嵌套形式,
if [ $NUM -gt 50 ]
thenecho "NUM > 50"if [ $NUM -gt 100 ] #若NUM大于50,在判断和100的关系thenecho "NUM > 100"elseecho "NUM <= 100"fi
elif [ $NUM -eq 50 ]
thenecho "NUM = 50"
elseecho "NUM < 50"if [ $NUM -gt 30 ] #若NUM小于50,在判断和30的关系thenecho "NUM > 30"elseecho "NUM <= 30"fi
fi
运行结果:
2.case语句
2.1case语句格式
2.2程序验证
2.2.1 终端先执行程序,在输入一个数
程序:
#!/bin/bashecho "This script will print your choice"
read num #读取键盘输入的数字case "$num" in"1")echo "your choice is one";; #当前语句结束符"2")echo "your choice is two";;"3")echo "Your choice is three";;*) #以上case 语句未执行,执行该语句echo "Error Please try again!" exit 1 #退出,不会打印下面的 hello world;;
esac #case语句结束标志,和case匹配echo "hello world"
运行结果;
2.2.2 终端执行程序时同时输入一个预设变量
终端执行程序时同时输入一个预设变量,该预设变量在程序中直接使用。
程序:
#!/bin/bash# 终端输入: ./xx.sh 2
# 上述输入的 ./xx.sh为预设变量 $0, 2为预设变量 $1
echo "This script will print your choice"case "$1" in"1")echo "your choice is one";; #当前语句结束符"2")echo "your choice is two";;"3")echo "Your choice is three";;*) #以上case 语句未执行,执行该语句echo "Error Please try again!" exit 1 #退出,不会打印下面的 hello world;;
esac #case语句结束标志,和case匹配echo "hello world"
运行结果:
2.2.3 case带有按位或运算和通配符匹配
程序:
#!/bin/bashecho "Please input your choice:"
read choicecase "$choice" in#输入 y Y yes Yes YES 5个中的一个,都会输出下面语句y | Y | yes | Yes | YES)echo "It's right";;# *是一个通配符,可以匹配任意字符并且数量不限# N* 只要是N开头的,都会执行下面的命令N* | n*)echo "It's wrong";;*) #其他条件echo "Error Please try again!"exit 1
esac
运行结果:
3.for语句
3.1for语句格式
for语句变量不加 $ 符号
3.2程序验证
3.2.1 for语句形式1-变量求和
在shell中,变量默认是字符串类型,未初始化时为null(空)。但在算术运算中,未初始化的变量被视为0。如果使用declare -i声明变量为整数,但未赋值,变量在算术运算中视为0,但直接echo可能显示为空。因此,严格来说,整数类型的变量默认值并不是0,但在算术表达式中会被当作0处理。
程序:
#!/bin/bash#声明sum变量是一个整数变量,准备保存整数
# declare 也可以写作 typeset
declare -i sum
typeset -i sum1# for语句变量不加 $ 符号
for (( i=1; i<=100; i++ ))
dosum=sum+i
doneecho "The sum result is $sum"for (( i=1; i<=100; i++ ))
dosum1=sum1+i
done
echo "The sum1 result is $sum1"

3.2.2 for语句形式2-循环输出变量
程序:
#!/bin/bash#注意:for循环后的变量之前不能加$#for var in con1 con2 con3 ...
#第一次循环时,$var的内容为con1
#第二次循环时,$var的内容为con2
#第三次循环时,$var的内容为con3
#...
#当in后面所有的值都赋值完毕并执行命令后,循环结束for i in 1 2 3 4 5
doecho $i
done
echo "结束"
运行结果:
3.2.3 for语句形式2-执行ls命令,循环判断该目录下的文件类型
(1)程序遍历输出该目录下的文件
程序:
#!/bin/bashfor name in `ls`
doecho " $name"echo " ---"
done
运行结果:
(2)程序遍历判断该目录下的所有文件类型
程序:
#!/bin/bashfor name in `ls`
doif [ -f $name ];then # -f 普通文件echo "$name is file"elif [ -d $name ];then # -d 目录文件echo "$name is directory"elseecho "其他类型文件"fi
doneecho "结束"
运行结果:
与终端执行ll命令判断结果一致。
4.while语句
4.1 while语句格式
4.2 程序验证
程序:
#!/bin/bash#声明 num变量是一个整数变量,准备保存整数
# declare 也可以写作 typeset
declare -i num
typeset -i s #声明s变量是一个整数变量echo "num= $num" #未赋值,算数运算默认为0
while [ "$num" != "101" ] #求1~100的累加和
do# echo "num= $num"s+=num;num=num+1;
doneecho "The count is $s"
echo "结束"
运行结果:
5.until语句
5.1 until语句格式
5.2 程序验证
程序:
#!/bin/bash#声明 num变量是一个整数变量,准备保存整数
# declare 也可以写作 typeset
declare -i num
typeset -i s #声明s变量是一个整数变量echo "num= $num" #未赋值,算数运算默认为0
#until循环,是循环条件不成立,执行命令体,如果条件为真,则循环结束
#until [ "$num" = "101" ] #求1~100的累加和,num等于101时,退出循环
until [ "101" = "$num" ] #求1~100的累加和,num等于101时,退出循环
do# echo "num= $num"s+=num;num=num+1;
doneecho "The count is $s"
echo "结束"

6.break、continue
6.1 break
#!/bin/bashfor ((num=1; num<=10; num++))
do if [ $num -eq 5 ] #判断num是否等于5,等于5时退出整个循环then#break退出整个循环breakfiecho "num = $num"
doneecho "结束"
运行结果:
6.2 continue
#!/bin/bashfor ((num=1; num<=10; num++))
do if [ $num -eq 5 ] #判断num是否等于5,等于5时退出本次循环,继续执行下次循环then#continue退出本次循环,当执行到continue的位置时,#循环下方的代码不在执行,但是接着下个循环继续执行continuefiecho "num = $num"
doneecho "结束"
