一
:Shell
介绍
1:
什么是
shell
脚本
Shell
脚本与
Windows/Dos
下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执
行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比
Windows
下的批处理更强大,比用其
他编程程序编辑的程序效率更高,它使用了
Linux/Unix
下的命令。
二
:Shell
脚本的规则
Shell
和
python
都是弱语言
1:
变量的规则
定义变量规则
:
变量名
=
值
shell
定义变量的规则
:
1:
等号两边不能有空格
2
:定义特殊的变量需要用单引号或者双引号结合
3
:定义
linux
命令需要用反单引号
区分单引号和双引号的不同和相同点
双引号中有
$
变量名,输出的是变量名对应的变量值
单引号中有
$
变量名,输出的是
$
变量名
2:
脚本的命名格式
脚本名称使用
.sh
结尾
3:
脚本的起始行格式
第一行必须写
# !/bin/bash
4:
脚本输入输出格式
1
:输入语句用
:read -p "
描述
"
2
:
Shell
输出值
:echo $
变量名
5:
脚本的调用
方式
1
:
./
脚本名
.sh(
权限的问题
)
方式
2
:
sh
脚本名
.sh
![](https://img-blog.csdnimg.cn/0041dcecec04401ebc3b8713e4955c59.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbTBfNjEwNTkzMTc=,size_16,color_FFFFFF,t_70,g_se,x_16)
注意点
:read
可以传递多个数据
read –p”name and passwoed”name password
超过的部分都填充在最后一个变量上
![](https://img-blog.csdnimg.cn/1c747dc28f7f422aa89e72e301c98239.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbTBfNjEwNTkzMTc=,size_16,color_FFFFFF,t_70,g_se,x_16)
6:
参数传递
参数传递 :向
.sh
文件中传递数据
格式
: sh
脚本名
.sh
参数
1
:输入语句用
:read -p "
描述
"
2
:
Shell
输出值
:echo $
变量名
方式
1
:
./
脚本名
.sh(
权限的问题
)
方式
2
:
sh
脚本名
.sh
$1
:接收第一个参数
~~$n
$n:
文件名称
$@:
所有参数
s
$#
参数个数
$0
![](https://img-blog.csdnimg.cn/e1b70e6372fa42b5bd200e77c2c45750.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbTBfNjEwNTkzMTc=,size_16,color_FFFFFF,t_70,g_se,x_16)
7
:比较运算符和逻辑运算符
(
1
)比较运算符(
**
数字)
**
-eq
比较是否相等
-ne
比较不相等
-gt
比较大于
-ge
比较大于等于
-lt
比较小于
-le
比较小于等于
(
2
)比较运算符(
**
字符串)
**
==
比较是否相等
!=
比较不相等
加一操作
:((i++)) ((i+=1))
加
n
操作
:s=$(($s+$i)) s=$[$s+$i] ((s=$s+$i))
(
3
)逻辑运算符
-a
逻辑与
-o
逻辑或
!
逻辑非
8
:
if
语句
格式:
if [
条件
]
then
语句
else
语句
fi
注意点
:
1: if
后面有空格
, 2
:条件两边有空格
, 3
:
if
条件里面存在变量,需要
$,
而且变量两边需要双引号
, 4
:
fi
是结束标识
练习:判断用户输入的用户名
(name)
和密码
(password)
是否为
*
*admin
和
123456,
如果是则提示登
录成功
(success)
,否则提示失败(
fail
)
多条件语句格式;
if [
条件
]
then
语句
elif [
条件
]
then
语句
......
else
语句
fi
练习:输入学生的成绩
,80<score<=100
提示
very good
,
60<score<=80
提示
good,
其他则提示不
及格
![](https://img-blog.csdnimg.cn/f6c30159a9b54a54a55d64839116e9d2.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbTBfNjEwNTkzMTc=,size_16,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/b18a891af054444ba448165f3b229506.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbTBfNjEwNTkzMTc=,size_16,color_FFFFFF,t_70,g_se,x_16)
9
:
case
规则
格式
:
case $
变量名
in
"
值
")
语句
;;
"
值
")
语句
;;
.....
esac
注意:
1:case
这第一行以
in
结尾
2
:值可以是字符串也可以是数字, 如果数字范围
[0-9] 3
:结束语句
;;
4:esac
结束标志
练习:输入一个序号,判断该用户选择哪款产品,
A
:笔记本
B
:手机
C
:小台灯
![](https://img-blog.csdnimg.cn/89173e23ec8247d1a97ae7418b2d5016.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbTBfNjEwNTkzMTc=,size_16,color_FFFFFF,t_70,g_se,x_16)
练习:请输入对客服的满意度,【0-3】不满意,【4-6】满意,【7-9】非常满意
10:For循环
格式:
for
变量
in
列表
do
语句
done
注意
1:
结束标志
done
、
![](https://img-blog.csdnimg.cn/a1af37195ec74f2db961709eccc1d0ad.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbTBfNjEwNTkzMTc=,size_16,color_FFFFFF,t_70,g_se,x_16)
扩充
:
试想列表中的元素过多的时候,需要怎么做?
seq mix step max
注意
:mix
开始数据
step:
间隔
max
结束数据,如果
step
为
1
,可以省略,需要用反单引号
11:While循环
while [
条 件
]
do
语句
done
注意
:
1: while
后面有空格
, 2
:条件两边有空格
, 3
:
while
条件里面存在变量,需要
$,
而且变量两边需要双引号
,
4
:
done
是结束标识
练习:求
1-100
之间的和
![](https://img-blog.csdnimg.cn/e8f520421e8a40088bc1fbdb62942c34.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbTBfNjEwNTkzMTc=,size_16,color_FFFFFF,t_70,g_se,x_16)
答案
![](https://img-blog.csdnimg.cn/de5a63d918cf48669a471f2ede50bfa9.png)
三:Shell脚本的函数
1:定义格式
函数名
(){
代码
}
调用格式
函数名
注意点
:
必须先定义一个函数,然后再调用它
![](https://img-blog.csdnimg.cn/f893466a8d9f4ef586801acf33a520b9.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbTBfNjEwNTkzMTc=,size_16,color_FFFFFF,t_70,g_se,x_16)
2:函数中的参数
使用$n来接收数据
练习:输入1,100两个整数进行求和运算,并打印结果
练习:输入任意两个整数进行求和运算,并打印结果
3
:函数中的返回值
Shell
中函数中默认存在返回值
查看函数的返回值
$
?
![](https://img-blog.csdnimg.cn/375327566a2d4d64b04705ce85dc35ff.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbTBfNjEwNTkzMTc=,size_16,color_FFFFFF,t_70,g_se,x_16)
注意点
如果没有代码错误默认返回值为
0
有代码错误返回
1
查看返回值内容
:$?
![](https://img-blog.csdnimg.cn/6ffbdd8bfa4644fd8ef573c31c90739a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbTBfNjEwNTkzMTc=,size_12,color_FFFFFF,t_70,g_se,x_16)