01. 环境变量配置
02. 系统环境变量
03. 用户环境变量
04. 命令替换
有两种方法可以实现:
- 反引号字符( ` )
- $( ) 格式
例如,有时候脚本中的cd命令找不到,执行报错等等
- shell 在执行脚本的过程中,会创建一个子shell,并在子shell中逐条执行脚本中的命令
- 子shell会从父shell中继承变量,但是执行后不会改变父shell的环境变量
- 子shell中的操作和环境变量不会影响父进程,在执行完子shell后又回到父进程
- source可以在当前的shell环境下执行,不会创建子shell,直接影响父进程
05. 输出重定向
标准输出覆盖:
A > B 等价于 A 1> B
标准输出追加:
A >> B 等价于 A 1>> B
标准错误输出覆盖:
A 2> B
标准错误输出追加:
A 2>> B
标准输出和错误输出覆盖:
A &> B
标准输出和错误输出追加:
A &>> B
日志可以扔进黑洞位置:
/dev/null
使用管道符过滤标准输出数据流:
A | ...
使用管道符过滤标准输出和错误输出数据流:
A 2>&1 | ...
记录消息,覆盖 tee ,追加 tee -a (tee 默认接收标准输入流,显示到界面和记录到文件同时进行)
06. 输入重定向
07. 管道
08. 数学运算 expr 命令(不太灵活)
ARG1 | ARG2 如果ARG1既不是null也不是零值,返回ARG1;否则返回ARG2
ARG1 & ARG2 如果没有参数是null或零值,返回ARG1;否则返回0
ARG1 < ARG2 如果ARG1小于ARG2,返回1;否则返回0
ARG1 <= ARG2 如果ARG1小于或等于ARG2,返回1;否则返回0
ARG1 = ARG2 如果ARG1等于ARG2,返回1;否则返回0
ARG1 != ARG2 如果ARG1不等于ARG2,返回1;否则返回0
ARG1 >= ARG2 如果ARG1大于或等于ARG2,返回1;否则返回0
ARG1 > ARG2 如果ARG1大于ARG2,返回1;否则返回0
ARG1 + ARG2 返回ARG1和ARG2的算术运算和
ARG1 - ARG2 返回ARG1和ARG2的算术运算差
ARG1 * ARG2 返回ARG1和ARG2的算术乘积
ARG1 / ARG2 返回ARG1被ARG2除的算术商
ARG1 % ARG2 返回ARG1被ARG2除的算术余数
STRING : REGEXP 如果REGEXP匹配到了STRING中的某个模式,返回该模式匹配
match STRING REGEXP 如果REGEXP匹配到了STRING中的某个模式,返回该模式匹配
substr STRING POS LENGTH 返回起始位置为POS(从1开始计数)、长度为LENGTH个字符的子字符串
index STRING CHARS 返回在STRING中找到CHARS字符串的位置;否则,返回0
length STRING 返回字符串STRING的数值长度
+ TOKEN 将TOKEN解释成字符串,即使是个关键字
(EXPRESSION) 返回EXPRESSION的值
09. 数学运算 方括号
10. 数学运算 浮点数
11. 退出脚本
脚本中的最后一条命令无论执行成功失败,都会退出,可以指定退出状态码,当然也会有一个默认的退出状态码。