分支结构: if...else
格式1:
if [ 条件 ]
then
语句体
else
语句体
fi
注意 :条件的两边是空格,
多个条件之间要有空格
if 后面要有空格
条件中如果存在变量, 那么变量的两边要有双引号
例如: name="xiaoming" ---> echo $name N="xiaoming"
在if的条件中取应该是"$name">"$N" 两个变量进行比较 if变量中$的两边一定要有双引号
格式2: if语句 和 then 在同一行,中括号和then之间用英文的分号隔开
if [ 条件 ];then # 英文分号
语句体
else
语句体
fi
案例: 判断/root目录是否为空
查看/root下有没有东西 : ls /root
字符串之间的判断: == 字符串是否相等
!= 是否不相等
脚本内容(正确写法):
![]()
结果:
正常结果输出
注意点 : 反单引号和空格
带异常的结果
案例第二种shell写法
结果:
案例: 通过输入任意目录判断是否为空
脚本内容:
结果:
逻辑运算符: == 是判断字符串是否一样
关系运算符 | 命令 | 举例 |
且/与 | -a | a == 0 -a b == 0 a为0且b为0 |
或 | -o | a == 2 -o a == 1 a为0或者a为1 |
非 | ! |
案例:
判断用户输入的用户名和密码是否为admin 123456,如果是则提示登录成功,否则提示失败
分析: 两个条件是且的关系
shell 脚本:
结果:
结果逻辑有问题????????????????????????????
比较运算符: = 是比较两个数字的大小 注意和 == 区分开
比较运算符 | 命令 | 含义和举例 |
等于 | -eq | 判断是否相等 |
不相等 | -ne | 判断是否不相等 |
大于 | -gt | 判断是否大于 |
大于等于 | -ge | 判断是否大于等于 |
小于 | -lt | 判断是否小于 |
小于等于 | -le | 判断是否小于等于 |
案例: 输入数字,判断是否大于0,如果大于0则将该数字-1并输出,否则+1输出
变量运算的多种写法
i=i+1的五种方式:
序号 写法 第一种方式 ((i++)) 第二种方式 ((i+=1)) 第三种方式 i=$[$i+1] 第四种方式 let i=i+1 第五种方式 i=$(($i+1)) 变量间加减运算:
s=$(($s+$i)) s=$[$s+$i] ((s=$s+$i))脚本:
结果: 输入2进行了减1
输入0 进行了加1
输入-8进行了加1 结果-7
输入9 进行了减1 结果8
知识点: test命令
test 参数 变量名 #命令作用: 判断文件的状态
-e 表示文件是否存在
-f 表示文件是否存在且为文件
-d 表示文件名是否存在且为目录
-r 可读
-w 可写
-x 可执行
案例: 判断用户输入的目录是否存在,如果存在则统计目录下的文件个数,否则提示用户该目录不存在
脚本:
结果:
知识点: 多分支结构
if [ 条件 ]
then
语句
elif [ 条件 ]
then
语句
elif [ 条件 ]
then
语句
...
else
语句
fi
案例: 判断学生的成绩,大于90-100提示优秀,80-90之间提示良好,70-80之间则提示一般,60-70之间提示及格。其他则提示不及格
shell脚本:
![]()
结果:
知识点: 文件判断命令作为 if的判断条件
文件判断:
-r -r filename 文件是否存在且可读 # filename是输入的内容,文件目录
-w -w filename 文件是否存在且可写
-x -x filename 文件是否存在且可执行
-f -f filename 文件是否存在且是普通文件
-d -d filename 文件是否存在且是一个目录
-e -e filename 文件是否存在
-n -n str1 字符串长度是否不等于0
-z -z str2 字符串长度是否等于0
案例: 判断用户输入的内容是否为空,为空则提示,不为空则判断是否为目录,不为目录则判断是否为文件,否则提示错误信息
shell脚本:
结果:
知识点: case分支
格式
case $变量名 in
"值") # 变量和值进行比较
语句1;; # 如果一样执行语句1 ,注意是 ;;
"值") # 上面的判断不满足,
语句2;; # 当第二个比价满足时执行语句2
......
*) # 当上面都不满足的时候默认情况
语句体;;
esac
注意:
1# 从上往下只要有一个条件满足,就执行此条件下的语句体, 下面就不再进行判断了
2# case 第一行最后必须是 in
3# 语句体结束必须是两个分号 ;; 结束语句的意思
4# case 的最后 esac
5# 值可以是字符串也可以是数字
6# 值还可以是区间范围[0-9]
案例1: 输入一个序号,判断该用户选择哪款产品,A:笔记本 B:电饭煲 C:小台灯
shell脚本:
![]()
结果:
案例2: 请输入对客服的满意度,【0-3】不满意,【4-6】满意,【7-9】非常满意
shell脚本:
结果:
总结:
1.shell介绍
通常所说的shell就是shell脚本,它是一门脚本语言,弱类型
2.shell规范
第一行内容为#!/bin/bash
#注释
是以.sh结尾的文件
3.shell语法
变量
定义
释放变量
变量值如果有空格,需要加引号
"" :输出变量对应的值
'':原样输出
``:定义命令变量时需要使用``
命名规范
输出变量:echo $变量名
输入:read 变量名
read -p "提示信息" 变量名
向文件传递参数:
$1--->传递第一个参数
$2---->....
$3--->....
$n---->......
$0:显示的是文件名称
$@:显示所有的参数
$#:显示的参数的个数 重定向:将内容保存到文件中
正确命令: 用数字1表示, >覆盖,>>追加
错误命令:用数字2表示,>覆盖,>>追加
程序的结构:
分支结构:
if...else分支:
逻辑运算符:-a -o !
比较运算符:-ge -gt -lt -le -eq -ne
测试文件的状态:test 参数 文件名
字符串判断:== ,!=
文件判断:-d -e -f -w -r -x .....
if...elif...else分支
case分支:
注意:
1.case这一行的最后为in
2.;;表示语句的结束
3. *:表示默认
4.esac:表示case语句结束
5.值:可以是字符串、数字、还可是区间范围【0-9】之间