shell是弱类型变成语言
变量赋值: VAR_NAME=VALUE
撤销变量: unsetVAR_NAME
特殊变量: $? 执行吗
$# 参数geshu
$*参数列表
$@参数列表
bash:
变量类型 1、环境变量
exportVAR_NAME=VALUE
脚本在执行的时候会启动一个子shell进程:
命令行中启动的脚本会继承当前shell的环境变量
系统自动执行的程序脚本(非命令行启动)就需要自我定义环境变量
2、本地变量(局部变量)
VAR_NAME=VALUE 作用于整个bash进程。
localVAR_NAME=VALUE 作用于当前代码段。
3、位置变量
$1,$2,.....
4、特殊变量
$?:保存上一个命令执行状态返回值
程序执行以后可能有两只返回值
1、程序执行结果
2、程序执行状态返回代码(0-255)
0是正确执行
1-255:错误执行 1,2,127系统保留
bash如何实现条件判断?
条件测试类型:
1、整数测试
2、字符测试
3、文件测试
条件测试的表达式:
[ expression ] 两头空格 否则语法错
[[ expression ]] 同上
tsetexpression
整数比较:
-eq:测试两个整数是否相等 例如 $A -eq $B
-nq:测试两个整数是否不等 不等 为真
-gt: 测试一个数是否大于另一个数
-lt: 测试一个数是否小于于另一个数
-ge: 大于或等于
-le:小于或等于
命令的逻辑关系:
逻辑与:&&
逻辑或:||
#!/bin/bash !iduser1&>/dev/null&&useradduser1&&echo"user1"|passwd--stdinuser1&>/dev/null||echo"用户已经存在"
条件判断,控制结构
单支语句判断
if 判断条件 ;then
statement1
statement1 4 2 3
.....
else
statement3
statement4
....
fi
多分支if语句
if 判断条件1
then
statement1
....
elif 判断条件2
then
statement2
elif判断条件3
then
statement3
else
statement4
fi
文件测试
-e file :测试文件是否存在
-f file :测试是否为普通文件
-d file :测试指定路径是否为目录
-x
-r
-w file 测试文件的权限