Linux中shell scripts
▲shell脚本
shell script是利用shell的功能所写的一个程序,这个程序是使用纯文字文件,将一些shell语法与指令写在里面,搭配正则表达式,管道命令与数据流重导向等功能,以达到我们所想要的处理目的。
shell script可以用来追踪与管理系统的重要工作,简单入侵侦测功能,建议的数据处理
?
在shell script中需要注意的事项
- 指令与参数间的多个空白会被忽略掉
- 空白行和tab也将被忽略掉
- 如果读到一个Enter符号(CR),就尝试开始执行该命令
- 如果一行的内容太多,可以使用\[Enter]来延伸至下一行
- 任何加在#后面的字,将全部视为批注文字而被忽略
?
如何执行.sh脚本文件
- 将shell.sh加上可读与执行权限,以./shell.sh来执行
- 直接以sh shell.sh的方式来直接执行。sh是bash的软连接。
?
sh [-nvx] scripts.sh
????参数-n????????不要执行script,仅查询语法的问题
????参数-v????????在执行script前,先将script的内容输出到屏幕上
????参数-x????????将使用到的script内容显示到屏幕上
?
编写脚本时需要添加的代码:
????功能,版本信息,作者与联络方式,版权声明方式,历史记录,较特殊的命令使用绝对路径的方式来下达,声明与设置脚本运行时需要的环境变量
?
例如编写一个打印hello world的脚本,代码如下:
#!/bin/bash #Program: # this scripts is used to print hello world #History: 2015-1-26 youname first release PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH ? echo "hello world" exit 0 |
?
▲test判断
关于某个文件名的判断(存在与否)
????test –[bcedfpSL] filename
关于档案的权限侦测
????test –[rwxugks] filename
两个档案之间的比较
????test file1 –[nt,ot,ef] file2
????????-nt????newer than
????????-ot????older than
????????-ef????file1与file2是否为同一档案,可用在hard link的判定上
两个整数之间的判定
????test n1 –[eq,ne,gt,lt,ge,le] n2
????????-eq????equal
????????-ne????not equal
????????-gt????greater than
????????-lt????less than
????????-ge????greater than or equal
????????-le????less than or equal
判定字符串的数据
????test –z string????????若string为空(null),则为true
????test –n string????????若string非空,则为true
????test str1 = str2????????若相等,回传true
????test str1 != str2????若不等,回传true
多重条件判定
????参数-a(and,两状况同时成立)
????参数-o(or,任何一个成立)
????参数!(反相状态)
?
判断符号[]
????将判断特征和被判断对象放入中括号中,不需要test了
?
▲if判断语句
????if [条件判断式]; then????????fi结束
????if [条件判断式]; then else????fi结束
????if [条件判断式1];then elif[条件判断式2];then else????fi结束
?
▲case…esac判断
?
▲function功能
格式如下:
????function fname()
????{
????程序段
}
?
function的设定一定要在程序的最前面
拥有内建变量,$0表示函数名称,后续接的变量标记为$1,$2…
?
▲循环控制
while循环:????当condition成立时,开始循环
while [condition]
do
????程序段落
done
?
until循环:????当condition成立时,终止循环
until [condition]
do
????程序段落
done
?
▲for循环
格式1:
for ((初始值;限制值;步长))
do
????程序段
done
?
格式2:
for var in con1 con2 con3…
do
????程序段
done
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。