shell script是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell语法与命令(含外部命令)写在里面,搭配正则表达式、管道命令与数据流重定向等功能,以达到我们所想要的处理目的。
一.第一个script的编写与执行
执行:命令的执行从上而下,从左而右的分析与执行;命令、参数间的多个空白会被忽略、空白行也被忽略、[tab]键视为空格键;如果读到一个符号,就尝试执行该行命令,内容太多,可以使用\[ENTER]来扩展到下一行;#可作为批注。
1.直接命令执行:需要rx权限./shell.sh
2.以bash进程执行:需要r权限bash shell.sh或sh shell.sh
直接执行和bash/sh执行,script是在子进程的bash内执行的,执行结束后,子进程内的各项变量或操作将会结束而不会传回到父进程中;利用source执行脚本,在父进程中执行
编写:mkdir scripts;cd scripts gedit sh01.sh
#!/bin/bash
#程序内容说明
PATH=/bin/:/sbin/...............
export PATH
echo -e "HelloWorld! \a \n"
exit 0
第一行#!/bin/bash声明这个script使用的shell名称
第三行主要环境变量声明,最后一行告知执行结果,可用echo $?查看结果
数值运算:var=$((运算内容))
二.善用判断式
1.利用test命令的测试功能:检测文件是否存在和其相关属性
2.利用判断符号[]:数据判断,中括号内每个组件都需要空格键来分割,括号内的变量最好以双引号括起来,常量以单或双括号括起来。
3.shell script的默认变量:$0执行脚本文件名,$1 $2...接受的参数,$#代表后接参数的个数,$@代表"$1","$2"...之意,每个变量是独立的,$*代表$1c$2c$3c$4,c为分割符, 默认空格键;shift:造成参数变量号码移位,shift后面可接数字,表示拿掉最前面的几个参数的意思
三.条件判断式
1.利用if...then
单层/简单条件判断式:
if [条件判断式] ; then
.....
fi
多个条件判断式时[]&&[]代表and,[] || []代表or,&&和||与程序的连续执行区别开
多重/复杂条件判断式:
if [ ] ;then
...
else
...
fi
if [ ] ; then
...
elif [ ] ; then
...
else
...
fi
2.利用case...esac判断
多个既定内容的判断:
case $变量名 in
"第一个变量内容")
;;
"第一个变量内容")
;;
*)
exit 1
;;
esac
如/etc/init.d/syslog restart的重启
3.利用function功能
类似自定义执行的东西:function设置要写在程序的最前面
function fname () {
程序段
}
function也拥有内置变量,$0$1$2....
四.循环(loop)
1.不定循环while do done,until do done
while [condition]
do
程序段
done
condition成立时,进入循环
until [condition]
do
程序段
done
condition成立时,终止循环
2.固定循环for...do..done
do
程序段
done
知道循环几次
for ((初始值;限制值;执行步长))
do
程序段
done
五.shell script的追踪与调试
sh [-nvx] scripts.sh
-n:不要执行script,尽查询语法错误
-v:在执行script前,先将script内容输出到屏幕上
-x:将使用到的script内容显示到屏幕上,这是很有用的参数
shell script的学习,需要多看,多模仿并加以修改成自己的样式