Shell是什么
Shell 是一个命令解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
Shell脚本运行方式
格式要求
- 脚本以 #!/bin/bash 开头
- 脚本需要有可执行权限
脚本的常用执行方式
方式一:输入脚本的绝对路径或相对路径
- 首先赋予helloworld.sh 脚本 +x 权限
- 执行脚本
方式二:sh + 脚本
说明:不用赋予脚本 +x 权限,直接执行即可
Shell 的变量
Shell 的变量的介绍
- Linux Shell 中的变量分为 系统变量 和 用户自定义变量。
- 系统变量:$HOME、$PWD、$SHELL、$USER 等等
- 显示当前 shell 中所有变量:set
shell 变量的定义
基本语法:
- 定义变量:变量=值
- 撤销变量:unsettle 变量
- 声明静态变量:readonly 变量
注意:不能 unset
定义变量的规则
- 变量名称可以由字母、数字和下划线组成,但是不能以数字开头。
- 等号两侧不能有空格
- 变量名称一般习惯为大写
将命令的返回值赋给变量
- A=`ls -la`
运行里面的命令,并把结果返回给变量A - A=$(ls -la)
等价于上面的语句
设置环境变量
语法:
- export 变量名=变量值 (将shell变量输出为环境变量)
- source 配置文件 (让修改后的配置信息立即生效)
- echo $变量名 (查询环境变量的值)
示例:
-
- 在 /etc/profile 文件中定义 TOMCAT_HOME 环境变量
- 在 /etc/profile 文件中定义 TOMCAT_HOME 环境变量
-
- 查看环境变量 TOMCAT_HOME 的值
- 查看环境变量 TOMCAT_HOME 的值
-
- 在另外一个 shell 程序中使用 TOMCAT_HOME
.
注意:在输出 TOMCAT_HOME 环境变量前,需要让其生效
source /etc/profile
- 在另外一个 shell 程序中使用 TOMCAT_HOME
位置参数变量
介绍
当我们执行shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量。
语法
- $n:n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如¥{10}
- $* :这个变量代表命令行中所有的参数,$*把所以把所有的参数看做一个整体
- $@ :这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待
- $# :这个变量代表命令行中所有参数的个数
预定义变量
介绍
shell 设计者事先已经定义好的变量,可以直接在shell脚本中使用。
基本语法
- $$ (当前进程的进程号)
- $! (后台运行的最后一个进程的进程号)
- $? (最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。)
运算符
介绍
学习如何在 shell 中进行各种运算操作
基本语法
- “$((运算式))” 或 “$[运算式]”
- expr m + n
注意 expr 运算符间要有空格 - expr m - n
- expr * , / , % 乘,除,取余
条件判断
语法
- [ condition ] (注意:condition前后要有空格)
#非空返回true,可用 $? 验证(0为true,>1为 false)
常用判断条件
两个整数的比较
- = 字符串比较
- -lt 小于
- -le 小于等于
- -eq 等于
- -gt 大于
- -ge 大于等于
- -ne 不等于
按照文件权限进行判断
- -r 有读的权限 [ -r 文件 ]
- -w 有写的权限
- -x 有执行的权限
按照文件类型进行判断
- -f 文件存在并且是一个常规的文件
- -e 文件存在
- -d 文件存在并是一个目录
流程控制
if 判断
语法:
if [ 条件判断式 ]
then
程序
fi
if [ 条件判断式 ]
then
程序
elif [ 条件判断式 ]
then
程序
fi
注意:
- [ 条件判断式 ] 中括号和条件判断式之间必须有空格
- 推荐使用第二种方式
case 语句
基本语法:
case $变量名 in
"值1")
如果变量的值等于值1,则执行程序1
;;
"值2")
如果变量的值等于值2,则执行程序2
;;
···省略其他分支···
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
for 循环
语法:
for 变量 in 值1 值2 值3
do
程序
done
for (( 初始值;循环控制条件;变量变化 ))
do
程序
done
while 循环
语法:
while [ 条件判断式 ]
do
程序
done
注意:while 和 [ ] 之间有空格
read 读取控制台输入
语法:
read (选项) (参数)
选项:
- -p:指定读取值时的提示符;
- -t:指定读取值是等待的时间(秒),如果没有在指定的时间内输入,就不再等待
参数:
- 变量:指定读取的变量名