1. 基础语法

  1. 脚本格式: 以 #!/bin/bash 开头(指定解析器)
  2. 自定义变量: 变量=值 (中间不能用空格)
  3. 撤销设置的变量: unset 变量
  4. 声明静态变量: readonly 变量 (此时不能unset)
  5. 变量名称可以用字母、数字和下划线组成,但不能以数字开头,环境变量名建议大写
  6. 变量的值有空格,需要使用双引号或者单引号括起来
  7. 设置全局环境变量 export 变量名
  8. 特殊变量: $n (n为数字,$0 代表脚本名称,$1-$9代表第一到第九参数,${10} 十个以上要用大括号)
  9. $#(获取所有输入参数,常用于循环)
  10. $ (命令行中的所有参数,$会把所有参数看做一个整体)
  11. $@ (命令行中所有参数,$@ 把每个参数区分对待)
  12. $? (最后一次执行的命令的返回状态,返回0证明上一个命令正确,反之不正确)

运算符 与 条件判断

  1. “$((运算式))” 或 “$[运算式]”
  2. 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. 脚本案例:

  1. if判断和循环 ```shell

    循环

    !/bin/bash

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

  1. ```shell
  2. # if判断的语法
  3. if [条件判断1] && (||) [条件判断2]; then
  4. do something
  5. elif [条件判断3] &&(||) [条件判断4]; then
  6. do anothers
  7. fi
  1. 其他