文章目录
1. if 判断
1.1 基本语法
(1)[ 条件判断式 ],中括号和条件判断式之间必须有空格;
(2)if后要有空格;
1.2 单If语句
单If分支语句
if <条件表达式>
then
指令f
fi
if <条件表达式>;then
指令f
fi
#简单记忆法:
如果 <你给我足够多的钱>
�
那么
我就给你干活
�
果如
#说明:<条件表达式> 可以是test、[]、[[]]、(())等条件表达式,每一个if条件语句都是以if开头,并带有then,最后以fi结尾
1.3 双If语句
if <条件表达式>
then
命令集1
else
命令集2f
fi
#简单记忆
�
如果 <你给我足够多的钱>
�
那么
�
我就给你干活
�
否则
�
我再考虑一下
�
果如
1.4 多If语句
if <条件表达式1>
then
指令集1
elif <条件表达式2>
then
指令集2
elif <条件表达式3>
then
指令集3
else
指令集4f
fi
#提示:如果加elif,那么就要加then,每个elif都要带有then,最后结尾的else后面没有then
#简单记忆
如果 <你有房>
那么
我就嫁给你
或者如果 <你家里有钱>
那么
我也可以嫁给你
或者如果 <你很努力很吃苦>
那么
我们可以先谈谈男女朋友
否则
我们没戏
�
果如
2. case 语句
2.1 基本语法
(1) case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。
(2) 双分号“;;”表示命令序列结束,相当于java中的break。
(3) 最后的“*)”表示默认模式,相当于java中的default。
case "变量" in
值1)
指令1...
如果变量的值等于1则执行指令1
;;
值2)
指令2...
如果变量的值等于2则执行指令2
;;
*)
指令3...
如果变量的值不等于以上的任何列值则执行默认指令
esac
#说明:当变量的值等于1时,那么就会相应的执行指令1的相关命令输出,值等于2时就执行指令2的命令,以此类推,如果都不符合的话,则执行*后面的指令,要注意内容的缩进距离
2.2案列
[root@Centos-root473791 ~]# cat caseD.sh
#! /bin/bash
case $1 in
"1")
echo "1"
;;
"2")
echo "2"
;;
*)
echo "other"
;;
esac
[root@Centos-root473791 ~]# sh caseD.sh 1
1
[root@Centos-root473791 ~]# sh caseD.sh 2
2
[root@Centos-root473791 ~]# sh caseD.sh 3
other
[root@Centos-root473791 ~]#
3. for 循环
3.1基本语法1
for 变量 in 值集合
do
执行命令
done
案列1,创建文件夹
for i in {1..10}
do
mkdir -p /datas/demo$i
for o in {1..10}
do
mkdir /datas/demo$i/test$o
done
done
案列2 打印数字
[root@Centos-root473791 ~]# cat forD.sh
#! /bin/bash
#打印数字
for i in 1 2 3
do
echo "The num is $i "
done
[root@Centos-root473791 ~]# sh forD.sh
The num is 1
The num is 2
The num is 3
[root@Centos-root473791 ~]#
3.2 基本语法2
for (( 初始值;循环控制条件;变量变化 ))
do
程序
done
案列3 从0加到100
[root@Centos-root473791 ~]# cat forD2.sh
#! /bin/bash
s=0
for((i=0;i<=100;i++))
do
s=$[$s+$i]
done
echo $s
[root@Centos-root473791 ~]# sh forD2.sh
5050
[root@Centos-root473791 ~]#
4.while循环
4.1 基本语法
while [ 条件判断式 ]
do
程序
done
while语法说明,while首先进行条件测试,如果传回值为0(条件测试为真),
则进入循环,执行命令区域,否则不进入循环。
满足while测试条件,执行命令区域,直到while的测试条件不满足结束执行
while循环(如果条件一直满足执行无穷循环)
案列1 从0加到100
[root@Centos-root473791 ~]# cat whileD.sh
#! /bin/bash
s=0
i=1
while [ $i -le 100 ]
do
s=$[$s+$i]
i=$[$i+1]
done
echo $s
[root@Centos-root473791 ~]# sh whileD.sh
5050
案列2
#! /bin/bash
declare -i i=1 #声明设置i和sum为整数型
declare -i sum=0
while ((i<=10)) #while条件测试,只要i值小于或等于10,就执行循环
do
let sum+=i #sum+=i 和sum=sum +i 是一样的,sum累加i
let i++ #let i++, i的值递增,此行是改变条件测试的命令
done # 遇到done,回到while条件测试
echo $sum # 直到while条件不满足,显示sum的值
5. Shell循环控制
break continue exit 一般用于循环结构中控制循环的走向
break n n表示退出循环的次数,如果省略n表示跳出整个循环
continue n表示退到第n层继续循环,如果省略n表示跳过本次循环进入下一次循环
exit n 退出当前的shell程序,并返回n,n也可以省略
return 用于返回一个退出值给调用的函数
shift 用于将参数列表list左移指定次数,最左端的那个参数就从列表中删除,其后边的参数 进入循环
6 until循环语句
while循环的条件测试是测试真值,until循环则是测试假值
until循环的语法结构
until 条件测试
do
执行命令
done
#!/bin/bash
declare -i i=10 #声明i和sum为整数型
declare -i sum=0
until ((i>10)) #条件测试:只要i值未超过10,就进入循环
do
let sum+=i #sum+=i和sum=sum+i是一样的,sum累加上i
let ++i #i的值递增1,此行是改变条件测试的命令,一旦i大于10,可终止循环
done #遇到done ,回到until条件测试
echo $sum #直到until的条件满足显示sum的值