特点
1 纯文本文件
2 包含shell的语法和命令(内部和外部命令)
3 支持正则表达式,管线命令,数据重导向等功能
4 支持数组、循环、条件与逻辑判断
5 不需编译即可执行,且有debug工具
6 script速度较慢,占用资源较多
基本语法
1 #!/bin/sh,第一行声明此script所使用的shell
2 #号后面都是注释,标注此script的功能,作者,时间等
3 export PATH,声明此script运行的环境变量
4 exit 0,最后script结束返回结果值,0代表正确
输入参数
$0 | 代表此script的文件名 |
$1 | 代表此script的第一个参数。$2代表第二个参数,以此类推 |
$# | 代表参数的个数 |
$@ | 代表"$1" "$2",每个参数独立的使用双引号 |
$* | 代表"$1c$2",c为分隔符,默认为空格 |
shift [n] | shell内部命令。对现有多个参数进行偏移删除 |
function功能
1 function的内容一定在script正文的最前面,这样才能被其他部分引用
2 function拥有内建变量。$0代表函数名,$1代表函数第一个参数
判断式
test | 检查文件各种属性或比较两个值 |
[](中括号) | 用法同test 中括号内的每个组件都需要空格来分隔 在中括号内的变量或常量最好都用双引号 中括号之间可以使用&&或||逻辑判断符 |
条件判断
if [判断式]; then fi | 单层条件判断 |
if [判断式]; then elif[判断式];then else fi | 多层条件判断 |
case $变量 in "value1") ;; "value2") ;; *) ;; esac | 每个value最好用双引号 每个程序段结尾需要用到;; 最后*表示其他所有值 |
循环
while [判断式] do done | 不定循环 当条件成立,进行循环 |
until [判断式] do done | 不定循环 当条件成立,终止循环 |
for 变量 in value1 value2 do done | 固定循环 变量每次从in后面取值,进行循环 |
for ((初始值;限制值;步阶)) do done | 固定循环 初始值,i=1 限制值,i<=100 步阶,i=i+1
|
Bash的参数进行debug
-n | 不执行script,仅查询语法 |
-v | 在执行script前,先将script的内容输出到屏幕 |
-x | 将使用的script内容显示到屏幕 显示结果的,同时也显示相应的语句,debug |
执行方式的区别
1 在新的子bash环境下运行此script
$ ./shell.sh //script需要rx权限 $ bash shell.sh //script需要r权限
2 在当前的bash环境下运行此script
$ source shell.sh
相关文件
/etc/init.d/ 此路径下的文件都是系统的shell scripts