注意事项:
1.命令的执行是从上而下,从左而右地分析与执行
2.命令、参数见的多个空白都会被忽略掉
3.空白行也将会被忽略掉,tab键同
4.如果读取到一个enter键(CR),就尝试执行该行命令
5.如一行内容太多,则可以使用"\[enter]“来扩展至下一行
6."#"作为批注,任何加在#后面的数据将全部被视为批注文字而被忽略(该行内)
如此以来,script内的命令会被一行一行的执行。
shell script 执行
1.直接命令执行
shell.sh需要有可读和可执行的(rx)的权限
root#shell.sh
2.以bash进程来执行
root#bash shell.sh
or
root#sh shell.sh
3. source命令
root# source shell.sh
前两种方法都是在当前shell 的子shell中执行的,shell.sh中设置的自定义变量在当前shell中不可用,而source命令是在当前shell中执行shell.sh脚本
script模板
#!/bin/bash ->指定script使用的shell名称
#Program: ->程序内容的说明,内容与功能、版本信息、作者与联系方式、建立日期、历史记录等
#.......
#......
#History
主要环境变量的声明,
script
告知执行结果
判断式
test 命令
root# test -e /file
关于某个文件名的“文件类型”判断,
-e:该文件名是否存在
-f:该文件名是否存在且为文件(file)
-d:该文件名是否存在且为目录(directory)
-b:该文件名是否存在且为一个block device设备
关于文件的权限检测,
-r:检测该文件名是否存在“可读”的权限
-w:检测该文件名是否存在“可写”的权限
-x:检测该文件名是否存在“可执行”的权限
两个文件之间的比较
test file1 -nt file2
-nt(newer than):判断file1是否比file2新
-ot:(older than):判断file1是否比file2旧
-ef:判断file1,file2是否为同一文件,可用在判断hard link 上,主要意义在于判定两个文件是否指向同一个inode
两个整数之间的比较 test n1 -eq n2
-eq:两数值相等
-ne:两数值不等(not equal)
-gt:n1 大于n2(greater than)
-lt:n1小于n2(less than)
-ge:n1大于等于n2(greater than or equal)
-le:n1小于等于n2(less than or equal)
判定字符串的数据
test -z string 判定字符串是否为0,若string为空字符串,则为true
test -n string 判定字符串是否非为0,若string为空字符串,则为false -n可省略
多重条件判定 test -r filename -a -x filename
-a:两个条件同时成立
-o:任何一个条件成立
!:取反
test -z filename == [ ”空格“-z”空格“filename"空格“]
[]内的每个组件都需要有空格键来分割
[]内的变量,最好用双引号括起来
[]内的常量,最好以单或双引号括起来
shell script 的默认变量
root#/path/scriptname opt1 opt2 opt3
$0 $1 $2 $3
$#: 参数个数
$@:代表命令后接所有参数
$*:代表“$1c$2c$3c$4...",其中c为分割字符,默认为空格键
shift 造成参数变量号码偏移
shift n 表示参数左移n位
条件判断式:
一个判断式
if [ 条件判断式 ]; then
script
fi
&& 代表 and
|| 代表or
if [ 条件判断式 ];then
script
else
script
fi
if []; then
script
elif []
script
elif
script
....
else
script
fi
利用case...... esac 判断
case $variable in
"varibale1")
script
;;
"variable2“)
script
;;
*) ->代表所有其他值(except variable1, variable2, variable3....)
exit 1
;;
esac
函数 function
function fname() {
}
函数调用格式:
script
fname
script...
function内置变量
fname opt1 opt2 opt3
$1 $2 $3
函数fname内部可以使用$1, $2, $3 对调用时使用的变量进行处理
循环(loop)
不定循环
1. while do done
while [ condition ]
do
script
done
当condition为真时进行循环,当contidion为假时,停止循环
2. until do done
until [ condition ]
do
script
done
当contidion条件成立时,停止循环,否则继续进行循环的程序段
for ... do... done(固定循环,已经知道进行几次循环)
for var in con1 con2 con3 .....
do
script
done
第1次循环时, var = con1;
第2次循环时,var= con2;
......
for ... do ... done的数值处理
for((初始值;限制值;执行步长))
do
script
done
初始值:某个变量在循环当中的初始值,类似i=1;
限制值:当变量的值在这个限制值的范围内,就继续循环,如i<100;
执行步长:每做一次循环变量的变化值,如i=i+1;
shell script 的追踪与调试
root#sh/bash [-nvx] shell.sh
-n : 不执行shell.sh,只检查语法问题
-v:在执行shell.sh前,先将shell.sh输出到屏幕上
-x:将使用到的script内容输出到屏幕上
阅读(1045) | 评论(0) | 转发(0) |