特点
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