SHELL编程
程序开始与注释
1 |
变量
shell变量
shell变量没有数据类型,都是字符串,即使数值也是字符串
a="hello"
等号两侧不能有空格
echo "${a}"
正常输出hello
echo '${a}'
单引号会消除自缚含义,输出${a}
unset a
删除变量
readonly a=3
设置只读变量
echo $
显示上一条指令的执行结果(0:成功;1:失败)
1 | echo `date` |
标准变量或环境变量
系统预定义变量,一般在/etc/profile定义
HOME 用户主目录
PATH 文件搜索路径
PWD 用户当前工作目录
PS1、PS2 提示符
HOSTNAME LOGNAME
echo $HOME
输出实例
env看环境所有变量
export name
把已经定义的本地变量变为全局变量
特殊变量
变量 | 含义 |
---|---|
$1,$2... | $1表示shell程序名称,$2开始为传入参数(argv) |
$# | 传递到脚本的参数列表,或表示参数的个数(argc) |
$@ | 传入脚本的全部参数(argv[1]--argv[n]) |
$* | 显示脚本的全部参数 |
$? | 前一个脚本的执行情况(0:成功,1:失败) |
$$ | 脚本运行的当前进程号 |
$! | 运行脚本最后一个命令 |
运算符和表达式
算数运算符、逻辑运算符、复制运算符与C完全相同
计算表达式
$(())
$[]
let var=
expr 4 + 5
Test 命令的用法
判断表达式 and or
-a -o
test $(($Year%400)) -eq 0 -o $(($Year%4)) -eq 0 -a $(($Year %100)) -ne 0
判断字符串
test -n 字符串a 字符串b
-z 字符串长度为0 ==字符串相等 !=字符串不等
判断整数
test 整数a -eq 整数b
运算符 含义 -ge 大于等于 -gt 大于 -le 小于等于 -lt 小于 -ne 不等于 判断文件
test File1 -ef File2
两个文件有相同的设备号和i节点号test File1 -nt File2
文件1比文件2新test File1 -ot File2
文件1比文件2旧单文件判断 eg:
test -d File
参数 含义 -d 文件存在并且是目录 -e 文件存在 -f 文件存在并且是正规文件 -r 文件存在并可读 -w 文件存在并可写 -x 文件存在并可执行
数组
a=(1 2 3 4)
a[0]=1;a[1]=2;a[2]=2
a=([1]=1 [2]=2)
1 | echo ${a[2]} #输出下标为2的数据 |
if
1 | if[] |
case
1 | case $1 in |
for
1 | for x in xxxx |
while
1 | while[] |
until
1 | until[] |
shell函数
1 | function add() |