一、概述
Shell是一个命令行解释器,它接受应用程序/用户命令,然后调用操作系统内核。
Shell还是一个功能相当强大的编程语言,易编写、易调试、灵活性强
二、Shell脚本入门
脚本以 #!/bin/bash 开头 (指定解析器)
三、变量
1.系统预定义变量
$HOME、$PWD、$SHELL、$USER
2.自定义变量
基本语法
- 定义变量:变量名=变量值 , !!!=号前后不能有空格
- 撤销变量:unset 变量名
- 声明静态变量:readonly 变量,注意:不能unset (类似于Java中的静态变量)
变量定义规则:
1. 变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建
议大写2.等号俩侧不能用空额3.在bash中,变量默认类型都是字符串类型,无法直接进行数值运算4.变量的值如果有空格,需要使用双引号或者单引号括起来
3.特殊变量
$n : 功能描述:n 为数字,$0 代表该脚本名称,$1-$9 代表第一到第九个参数,十以 上的参数,十以上的参数需要用大括号包含,如${10}
$# :功能描述:获取所有输入参数个数,常用于循环,判断参数的个数是否正确以及
加强脚本的健壮性$* :这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体
$@:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待
$? :功能描述:最后一次执行的命令的返回状态。如果这个变量的值为 0,证明上一
个命令正确执行;如果这个变量的值为非 0 (具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了!!!!!!! 和以往的都相反 判断为真是0 判断为假是1
四、运算符
$ ((运算式)) $[运算式]
五、条件判断
基本语法:
test condition
[ condition ] !!!condition前后一定得要有空格
常用判断条件:
1. 俩个整数之间比较
-eq 等于 ( equal ) -ne 不等于 (not equal )
-lt 小于 -le小于等于
-gt 大于 -ge大于等于
注明:如果是字符串之间的比较,用等号“=” 判断相等 ; 用 “!=”判断不等
2.按照文件权限进行判断
-r 可读 -w 可写 -x可执行
3.按照文件类型进行判断
-e 文件存在 -f文件存在并且是一个常规的文件 -d文件存在并且是一个目录
六、流程控制(重点)
1.if 判断
基本语法
1. 单分支
if [ 条件判断式 ] ;then 或者 if [ 条件判断式 ]
程序 then
fi 程序
fi
2.多分支
if [ 条件判断式 ]
then
程序
elif [ 条件判断式 ]
then
程序
else
程序
fi
注意:
[ 条件判断式 ] ,中括号和 条件判断式之间必须有空格
if后要有空格
2.case语句
基本语法
case $变量名 in
“值1”)
如果变量的值等于值1,则执行程序1
;;
“值2”)
如果变量的值等于值2,则执行程序2
;;
*)
如果变量的值都不是以上的值,则执行此程序
注意:
- case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束
- 双分号“;;”表示命令序列结束,相当于Java中的break
- 最后的“ *)”表示默认模式,相当于Java中的default
3.for循环
基本语法:
for (( 初始值;循环控制条件;变量变化 ))
do
程序
done
或者
for 变量 in 值1 值2 值3 ...
do
程序
done
4.while 循环
基本语法:
while [ 条件判断式 ]
do
程序
done