shell是弱类型变成语言
变量赋值: VAR_NAME=VALUE
撤销变量: unset VAR_NAME
特殊变量: $? 执行状态码
$# 参数geshu
$*参数列表
$@参数列表
bash:
变量类型 1、环境变量
export VAR_NAME=VALUE
脚本在执行的时候会启动一个子shell进程:
命令行中启动的脚本会继承当前shell的环境变量
系统自动执行的程序脚本(非命令行启动)就需要自我定义环境变量
2、本地变量(局部变量)
VAR_NAME=VALUE 作用于整个bash进程。
local VAR_NAME=VALUE 作用于当前代码段。
3、位置变量
$1,$2,.....
4、特殊变量
$?:保存上一个命令执行状态返回值
程序执行以后可能有两只返回值
1、程序执行结果
2、程序执行状态返回代码(0-255)
0是正确执行
1-255:错误执行 1,2,127系统保留
bash如何实现条件判断?
条件测试类型:
1、整数测试
2、字符测试
3、文件测试
条件测试的表达式:
[ expression ] 两头空格 否则语法错
` expression ` 同上
tset expression
整数比较:
int1 -eq int2 两数相等为真
int1 -ne int2 两数不等为真
int1 -gt int2 int1大于int2为真
int1 -ge int2 int1大于等于int2为真
int1 -lt int2 int1小于int2为真
int1 -le int2 int1小于等于int2为真
命令的逻辑关系:
逻辑与:&&
逻辑或:||
#!/bin/bash
! id user1 &> /dev/null && useradd user1 && echo "user1" |passwd --stdin user1 &> /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 测试文件的权限