1. 基础语法
- 脚本格式: 以 #!/bin/bash 开头(指定解析器)
- 自定义变量: 变量=值 (中间不能用空格)
- 撤销设置的变量: unset 变量
- 声明静态变量: readonly 变量 (此时不能unset)
- 变量名称可以用字母、数字和下划线组成,但不能以数字开头,环境变量名建议大写
- 变量的值有空格,需要使用双引号或者单引号括起来
- 设置全局环境变量 export 变量名
- 特殊变量: $n (n为数字,$0 代表脚本名称,$1-$9代表第一到第九参数,${10} 十个以上要用大括号)
- $#(获取所有输入参数,常用于循环)
- $ (命令行中的所有参数,$会把所有参数看做一个整体)
- $@ (命令行中所有参数,$@ 把每个参数区分对待)
- $? (最后一次执行的命令的返回状态,返回0证明上一个命令正确,反之不正确)
运算符 与 条件判断
- “$((运算式))” 或 “$[运算式]”
- expr +,-,*,/,% (expr运算符要有空格)
【condition】(condition前后要有空格) 比较关系有: = -lt(小于 less than) [ 23 -lt 49] -le(小于等于 less equal) -eq(等于 equal) -gt(大于 greater than) -ge(大于等于 greater equal) -ne (不等于 not equal)
按照权限: -r 有读权限 [ -r hello.sh] -w 有写权限 [ -w hello.sh] -x 有执行权限(execute)
按照文件类型判断: -f 文件存在且是常规文件(file) -e 文件存在(existence) -d 文件夹存在且是一个目录(directory)
2. 常用系统变量
$HOME : 当前用户的home目录(类似 cd ~) $PWD :当前所在目录 $SHELL : 当前的bash工具 $USER : 当前的用户
3. 脚本案例:
TARDIR=$1
TAG=$2
SUFFIX=”.tar”
LIST=ls $TARDIR/$SUFFIX
LISTIMPORT() {
for i in $LIST; do
/usr/bin/docker load -i $i
done
}
if [$TAG = “”] then LISTIMPORT else /usr/bin/docker load -i $TARDIR/$TAG fi
```shell
# if判断的语法
if [条件判断1] && (||) [条件判断2]; then
do something
elif [条件判断3] &&(||) [条件判断4]; then
do anothers
fi
- 其他