变量
shell脚本中的变量都是字符串。
变量类型
- 环境变量:系统预定义好的变量
1,用户环境变量(~/.bash_profile)
2,系统环境变量(/etc/profile)
env
和export
都可以查看系统环境变量 - 命令行变量:在脚本内部使用用户命令行中传入的参数,如下
- 自定义变量
定义、赋值与引用
注意等号两边不能有空格,引用采用${变量名}
的形式
撤销变量
unset 变量名
只读变量
readonly 变量名
算数运算
有以下算运算形式
$((表达式))
$[表达式]
expr 表达式
注意,前面2种没有空格,expr有空格
内置测试判断
2种形式,满足测试条件则为真
test 测试表达式
[ 测试表达式 ]
1.文件测试
- -e 判断file是否存在
- -f 判断file是否是普通文件
- -d判断file是否是目录
- -s判断file是否非空
- -r 判断file是否可读
- -w 判断file是否可写
- -x 判断file是否可执行
2.字符串测试
- s1 = s2 判断字符串s1、s2是否相同
- s1 != s2 判断字符串s1、s2是否不同
- s1 > s2 判断字符串s1是否大于s2
- s1 < s2 判断字符串s1是否小于s2
- -n s 判断字符串s长度是否为非0
- -z s 判断字符串s长度是否为为0
3.数值大小测试
- -eq 等于
- -ne 不等于
- -gt 大于
- -ge 大于等于
- -lt 小于
- -le 小于等于
其中测试表达式还可以用!(非) -o(或) -a(与)
连接起来
[ ! EXPR ] 逻辑非,如果 EXPR 是false则返回为真。
[ EXPR1 -a EXPR2 ] 逻辑与,如果 EXPR1 and EXPR2 全真则返回为真。
[ EXPR1 -o EXPR2 ] 逻辑或,如果 EXPR1 或者 EXPR2 为真则返回为真。
[ ] || [ ] 用OR来合并两个条件
[ ] && [ ] 用AND来合并两个条件
命令间逻辑符号
&&
||
;
CMD1 && CMD2
只有CMD1成功,才会执行CMD2,否则不执行
CMD1 || CMD2
只有CMD1失败,才会执行CMD2。否则不执行
CMD1 ; CMD2
CMD1执行完后再执行CMD2
执行方式
-
赋予权限直接运行
chmod +x first.sh
./first.sh
-
通过bash或sh运行
bash first.sh
sh first.sh
-
通过
.
或者source运行
source first.sh
. first.sh