目录
2.6 while...do...done,until...do...done不定循环
2.7 for var in ... do ...done固定循环
1.shell script简介
1.1 shell script能做什么
shell script是利用shell的功能锁写的一个程序,这个程序使用纯文本文件,将一些shell的语法与指令写在里边,搭配正规表示法,管线命令与数据流重导向等功能,以达到我们所想要的处理目的.
1.2 shell script优点
- 自动化管理重要依据
- 追踪与管理系统的重要工作
- 简单入侵检测功能
- 连续指令单一化
- 简易的数据处理
- 跨平台支持与学习历程较短
1.3 shell script额外注意事项
- 指令的执行时自上而下,从左到右的分析与执行
- 指令,选项,参数之间的多余空白会被忽略
- 空白行会被忽略,包括[tab]开头的空白行
- 如果读取到[Enter]就尝试执行该行(或该串)命令
- 如果命令太多可以用\[Enter]来延伸至下一行
- [#]是批注,任何#开头的行都会被忽略,除了shell说明,#!/bin/bash.表示用/bin/bash这个shell
1.4 脚本的执行
直接下达命令,文件必须有rx权限
- 绝对路径
- 相对路径
- 变量,将脚本放到PATH指定目录中
以bash程序来执行
- bash *.sh
- sh *.sh
- source执行,以上执行脚本方法不会把脚本中的变量传回到整个bash环境中,用 source *.sh执行脚本会使变量在整个bash中都可用
1.5 利用date进行文件建立
1.6 通过bc -l计算带小数的运算
2 shell script支持的语法
2.1 shell script默认变数与偏移shift
- $0:脚本名称
- $1,$2...$n:第一个参数第二个参数...第n个参数(按顺序)
- $#:参数个数
- $@:代表[ "$1","$2"..."$n" ]
- $*:代表[ "$1c$2c$3c...c$n" ],c是分割符,默认是空格
shift n
n是数字,不写默认是1,偏移量代表去除前n个参数,再重新作为新参数,如:
*.sh 1 2 3 4 5 6 7($1=1,$2=2...$7=7) shift 后 $1=2,$2=3...$6=7,再shift 3后 $1=5,$2=6,$3=7
2.2 判断式test 与 [ ]
test 与 [] 用法选项基本相同相同,不同的是
语法不同
- test:test -[选项] 目录/文件
- [ ] :[ -选项 "文件/目录" ]
- [ ]每个组件都要用空格隔开
- 在中括号内的变数最好都用双引号隔开
- 在中括号内的常数最好用单引号或双引号隔开
[]常用在if...then中
在bash的判断式中,一个等号与两个等号是一样的,但习惯上一般用两个等号,而一个等号用在变量的赋值上
在条件判断式中,复杂的判断
[ "${aa}" == "aa" -o "${aa}" == "bb" ]与[ "${aa}" == "aa" ] || [ "${aa}" == "bb" ] 是一个意思变量$aa等于"aa"或"bb"
[ "${aa}" != "aa" -a "${aa}" != "bb" ]与[ "${aa}" != "aa" ] && [ "${aa}" != "bb" ]是一个意思变量$aa不等于"aa"也不等于"bb"
2.3 条件判断式 if...then
2.4 case...esac判断
变量的取得方式
- 用默认变量$1...$n
- 用read命令获取
2.5 function 功能
如果用function功能,必须在用之前定义好
function 也有内置变量,与shell script类似,
- $0:function名称
- $1,$2...$n:第1个参数,第2个参数...第n个参数
在调用的时候把参数给上,如function a(){} 用的时候,a 1 2 3.
2.6 while...do...done,until...do...done不定循环
while...do...done是满足条件就执行
until...do.done正好相反,满足条件后结束循环
2.7 for var in ... do ...done固定循环
第n次循环${var} 等于第n个参数,那个con1,con2...conn用cut或awd分割后使用很实用
for循环的另一种写法
2.8 shell script 追踪