一、shell介绍
通常所说的shell就是shell脚本,它是一门脚本语言,弱类型,在定义时不需要指定变量类型
二、shell规范
1)第一行内容为#!/bin/bash,表示使用shell进行编程
2)#:shell中的注释
3)shell脚本是以.sh结尾的文件
三、语法
1、变量
1)定义变量格式
变量名=变量值 #==两边没有空格
2)变量命名规范
由字母、数字、下划线组成,不能已数字开头
3)输出和释放变量
输出变量:echo $变量名
释放变量:unset 变量名
4)特殊变量,带有空格的
双引号:如果变量值中存在$变量名(即变量)的话,那么输出结果将会是变量名对应的变量值,如果想原样输出,则可以在$变量名前加转义字符\
单引号:不管内容如何都原样输出
反单引号:专门用于存放命令
2、read的用法
1)方法1:read 变量名1 变量名2 。。。。
说明:变量名可以1个或多个,多个时变量名之间用空格隔开,如果给出变量值多于变量名,则把多余出的变量值都赋给最后一个变量
2)方法2:read -p ‘提示内容‘ 变量名1 变量名2 。。。。。
说明:添加提示信息,便于方便知道需要输入什么参数
3、参数传递
1)向.sh文件中传入数据
格式:sh xw.sh /etc /root ... 命令 文件名 参数1 参数2 。。。
2)文件内接收参数
$1:第一个参数
$2:第二个参数
。
。
。
$n:第n个参数
$0:为文件名
$@:所有参数
$#:参数个数
4、重定向
说明:把命令的内容输出到文件中
正确命令:由1表示
覆盖:命令 1>文件名 例:ls 1>1.txt
追加:命令 1>>文件名 例:ls 1>>1.txt
错误命令:由2表示
覆盖:命令 2>文件名 例:ls 2>1.txt
追加:命令 2>>文件名 例:ls 2>>2.txt
5、分支结构(if...else...)
1)格式:
if [ 条件 ];then
语句
else
语句
fi
2)注意事项
条件两边有空格隔开
多个条件之间要有空格
if后面要有空格
条件中如果存在变量,则变量两边需要添加双引号
3)案例 判断目录是否为空
6、逻辑运算符
1)说明:
且:-a
或:-o
非:!
2)案例:判断用户输入的用户名和密码是否为admin 123456,是则提示登录成功,否则提示登录失败
7、比较运算
1)说明:
-eq:判断是否相等
-gt:判断是否大于
-ge:判断是否大于等于
-lt:判断是否小于
-le:判断是否小于等于
-ne:判断是否不等于
2)数字变量操作
加1
((i++)) ((i+=1)) i=$[$i+1] i=$(($i+1)) let i=i+1
减1
((i--)) ((i-=1)) i=$[$i-1] i=$(($i-1)) let i=i-1
注:加减n,则把1变为n即可
3)案例:输入数字,判断数字是否大于0,大于0则将该数字减1并输出,否则加1并输出
8、判断目录、文件是否存在
1)test:
test -e 文件名:表示文件是否存在
test -f 文件名:表示文件是否存在且为文件
test -d 文件名:表示文件是否存在且为目录
test -r 文件名:可读
test -x 文件名:可操作
test -w 文件名:可写
2)案例1:利用test判断文件
3)if+参数
说明:去掉test,但沿用参数
格式:if [ -参数 ] 文件名
4)案例2:直接利用if+参数判断文件
9、if...elif...else分支
1)格式:
if [ 条件1 ];then
语句1
elif [ 条件2 ];then
语句2
elif [ 条件3 ];then
语句3
。。。。。
elif [ 条件n ];then
语句n
else
语句
fi
2)案例:判断学生成绩,[90-100]提示优秀,[80-90)提示良好,[70-80)提示一般,[60-70)提示及格,其他不及格
10、case分支
1)格式:
case $变量名 in
"值1")
语句1;;
"值2")
语句2;;
........
*)
语句n
esac
2)注意:
① case这一行最后必须是in
② ;;为结束语句
③ *默认
④ ‘值’可以是字符串也可以是数字
⑤ ‘值’也可以是范围
3)案例1:输入一个字母,判断该用户选择的是哪款产品,A:笔记本;B:电饭锅;C:小台灯
4)案例2:请输入对客服的满意度,【0-3】为不满意,【4-6】为满意,【7-9】为非常满意
11、循环结构:for
1)格式
for 变量名 in 列表
do
语句
done
2)列表
格式:seq start size max
说明:
start:开始点
size:间隔,若为1则可省略不写
max:结束点
3)案例:输入1-10之间的数
4)案例:求1-100之间的和