一、if 判断
if ... then ... fi
单层
如果 是真的 那么 ...
if [ 条件判断式 ];
then
当条件判断式成立时,可以进行的命令。
fi# 结束这个判断语句结构
if ... then ... else....fi
多重、复杂条件判断式
如果 是真的 那么 ... 否则 ...
一颗红心,两手准备if [ 条件判断式 ];
then
当条件判断式成立时,可以进行的指令工作内容;
else
当条件判断式不成立时,可以进行的指令工作内容;
fi
if ... elif ... elif ... else ... fi
多个条件判断 (if ... elif ... elif ... else) 分多种不同情况执行
if [ 条件判断式一 ];
then
当条件判断式一成立时,可以进行的指令工作内容;
elif [ 条件判断式二 ];
then
当条件判断式二成立时,可以进行的指令工作内容;
else
当条件判断式一与二均不成立时,可以进行的指令工作内容;
fi
注意二、利用case ...esca判断 基本语法
elif 也是个判断式,因此出现 elif 后面都要接 then 来处理!但是 else 已经是最后的没有成立的结果了, 所以 else 后面并没有 then
case$变量名称 in<==关键字为 case ,还有变量前有钱字号
"第一个变量内容")<==每个变量内容建议用双引号括起来,关键字则为小括号 )
程序段
;
;
<==每个类别结尾使用两个连续的分号来处理!
"第二个变量内容")
程序段
;
;
*)<==最后一个变量内容都会用 * 来代表所有其他值
不包含第一个变量内容与第二个变量内容的其他程序运行段
exit 1
;
;
esac<==反过来写,结束当前语句结构!
模式还可以是多个
#!/bin/bash
cat << EOF
m|M) show memory usages;
d|D) show disk usages;
q|Q) quit
EOF
read -p "Your choice" choice
case $choice in
m|M)
free -m
;
;
d|D)
df -h
;
;
q|Q)
exit
;
;
*)
eco "Invalid input"
;
;
esac
三、while...do...done(不确定的循环)
while [ condition ]==>中括号内的状态就是判断式
do==> do 是循环的开始!
代码段
代码段
done==> done 是循环的结束
四、 for do done (固定的循环)
for var in con1 con2 con3 ...
do
程序段
done
var 是变量名
con1 con2 con3 是常量,就是具体的数据
也可以是一个已经被赋值的变量, 写法 [图片上传失败...(image-4ede60-1565009376150)]
{val2}
以上面的例子来说,这个数值运算$var
的变量内容在循环工作时:
- 第一次循环时,
$var
的内容为 con1 ;- 第二次循环时,
$var
的内容为 con2 ;- 第三次循环时,
$var
的内容为 con3 ;- ....
?~ n=1
?~ let n++
?~ echo $n
2
?~ (( n++ ))
?~ echo $n
3
?~ a=2
?~ b=3
?~ let f=a+b
?~ echo $n
3
?~ echo $f
5
?~ let f = a + b==> 错误
zsh: bad math expression: operand expected at `='
?~ let "f = a + b"
?~ echo $f
5
for 循环中 变量的取值方式 a. 从一组字符串中取值
forvarinonetwothreefourfive
do
echo"****************************"
echo'$varis '$var
done
b. 从位置变量中取值
forvar
do
echo'-----------------------------'
echo'$varis '$var
done
c. 从累计变化的格式中取值
#!/bin/bash for((var=1;
var<=10;
var++))
do
echo"------------------------"
echo'$varis '$var
done
【7.逻辑结构】d. 从命令结果中取值
#!/bin/bash
forvarin$(catfile.txt)
do
echo" ------------------------"
echo'$varis '$var
done
六、break 和 continue