shell脚本
定义:以文件形式存放批量的linux命令集合,该文件能够被shell解释执行,这种文件就是shell脚本程序
通常由一段linux命令,shell命令,控制语句以及注释语句构成
shell脚本语句的编写
shell脚本是纯文本文件,可以使用任何文本编辑器编写
shell脚本通常以.sh作为后缀名
1. shell程序
第一行:指定用哪个程序来编译和执行脚本
#!/bin/bash #!/bin/sh
注释行:使用(#)进行注释
2. shell脚本变量
2.1 变量命名
变量必须以字母或下划线开头,后面可以跟字母,数字或下划线
变量名关于大小写敏感
2.2 变量类型
根据变量的作用域,变量可以分为本地变量和环境变量
本地变量只在创建他们的shell程序中可用,而环境变量在shell中的所有用户进程中可用,也称全局变量
2.3 变量赋值
等号两边不能有空格
如果要给变量赋空值,可以在等号后面跟一个换行符
2.4 显示变量的值
echo $variable echo ${variable}
2.5 清除变量
unset variable
2.6 显示所有变量
set
注:环境变量成为全局变量,习惯需要大写
注意:可被所有shell环境下访问
如果父shell进程中产生了子shell进程,则环境变量可被"继承"并复制
3. 位置参量
位置参量是一种特殊的内置变量,被shell脚本用来从命令行接受参数,或被函数用来保运传递给它的参数
执行shell脚本时,用户可以用过命令行想脚本传递信息,跟在脚本名后面的用空格隔开的每个字符串都称为位置参量
在脚本中使用这些参数时,需通过位置参数来引用 例如$1表示第一个参数,2 表 示 第 二 个 参 数 , 第 10 个 位 置 参 数 需 要 2表示第二个参数,第10个位置参数需要2表示第二个参数,第10个位置参数需要{10}来访问
4. $符号相关用法
$0
当前脚本的文件名
$1-9
第1个到第9个位置参数
${10}
第10个位置参数
$#
位置参数的个数
$*
以单字符串显示所有位置参量
${10}
第10个位置参数
$$
脚本运行的当前进程号
$!
最后一个后台运行的进程的进程号
$? 显示前面最后一个命令的退出状态,0表示没有错误,其他表示值表示有错误
5. 退出码
任何命令进行时都将会返回一个退出状态
查看命令echo $?
应用中同城会在关键步骤后判定$?,用来确认关键步骤执行是否正确,尤其在调度西永里需要监控sh返回码
shell脚本的返回码取决于最后一个命令的返回码
程序控制返回码:exit N
退出状态0成功,无错误
退出状态大于0.失败,某处有错误
6. 数组
数组定义:
arr=(math english chinese)
数组初始化
同上
数据引用
引用变量:a r r [ 0 ] 数 组 个 数 : {arr[0]} 数组个数:arr[0]数组个数:{#arr[]}
所有元素:${arr[]}
数组赋值:
arr[0]=chemical
7. date命令
date显示系统时间
date +%Y-%m-%d 年-月-日
date +%H:%M
利用date指令来取得所需要的档名
8. cal命令
查看日历信息
cal 年
cal [month][year] eg:cal 10 2009
9. 判断
1.关于某个文档名判断
-e : 该档名是否存在
-f : 该档名是否存在且为档案(file)
-d : 该文件名是否存在且为目录(directory)
2.关于文档权限侦测
-r : 侦测该文档是否具有可读的权限
-w : 侦测该文档是否具有可写的权限
-x : 侦测该文档是否具有可执行的权限
3.关于两个整数之间的判定
10. if判断
11. for循环
11. while循环