一、变量
二、引用&命令替换
三、退出状态&逻辑判断
四、表达式
一、变量
- 本地变量
- 当前shell拥有 举个例子 $LANG = xxx 再次登录就没了,其他ssh连接也不能共享
- 生命周期随shell
- 局部变量
- 只能local用于函数
本地局部变量演示:
- 位置
- $1,$2,${11}
- 脚本中使用
- 函数中使用
- 传给前面的命令加‘ ’ 如 awk命令。不加单引号传给bash
位置变量演示:
位置变量示例1:(脚本中用两个位置 1、2来接受外部的两个参数)
位置变量示例2:(大括号“{}”括起来)
位置变量示例3:(函数中使用)
位置遍历示例4:(传给bash不加 ‘ ’ ,传给前面的命令加‘ ’)
-
特殊
- $#:位置参数个数
- $*:参数列表,双引号引用为一个字符串
- $@:参数列表,双引号引用为单独的字符串
- $$:当前shell的PID:接收者
- $BASHPID:真实
- 管道 管道也是一个比较特殊的东西。使用管道左右两边会分别开启一个子bash
- $?:上一个命令退出状态
- 0:成功
- other 非0:失败
-
环境
- export 环境变量中使用,原理就是将变量导出共享到任何子bash中执行。
- 导入的父bash变量并非实时共享的
二、引用&命令替换
-
引用:
- 双引号:弱引用,参数扩展
- 单引号:强引用,不可嵌套
- 单双引号的区别:
- 花括号扩展不能被引用
- 命令执行前删除引用
-
命令替换:
- 反引号:`
- $(ls -l /)
- 可以嵌套
三、退出状态&逻辑判断
-
退出状态
- echo $? 0表示成功,非0表示失败。可以用在脚本里面进行逻辑判断。
-
逻辑判断
- command1 && command2 短路与
- command1 || command2 短路或
四、表达式
-
算术表达式
- let 算术运算表达式
- let C=$A+$B
- $[算术表达式]
- C =$[$A+$B]
- $((算术表达式))
- C=$(($A+$B))
- C=$((A+B)) 内层$可以省略
- ((A++)) 当某个值只改变不复制给其他变量,格式为去掉$
- expr 算术表达式
- 注意:表达式中各操作数及运算符之间要有空格。而且要使用命令引用
- C=
expr $A + $B
- let 算术运算表达式
-
help let一定要打开看看里面的各种表达式表示
-
演示:
-
条件表达式
- [ expression ]
- test expression
- [[ expression ]]
-
help test 可以判断文件/字符串 >、 < 号的问题,一定要打开查看下
-
演示: