Linux中shell scripts

shell脚本

shell script是利用shell的功能所写的一个程序,这个程序是使用纯文字文件,将一些shell语法与指令写在里面,搭配正则表达式,管道命令与数据流重导向等功能,以达到我们所想要的处理目的。

shell script可以用来追踪与管理系统的重要工作,简单入侵侦测功能,建议的数据处理

?

shell script中需要注意的事项

  1. 指令与参数间的多个空白会被忽略掉
  2. 空白行和tab也将被忽略掉
  3. 如果读到一个Enter符号(CR),就尝试开始执行该命令
  4. 如果一行的内容太多,可以使用\[Enter]来延伸至下一行
  5. 任何加在#后面的字,将全部视为批注文字而被忽略

?

如何执行.sh脚本文件

  1. shell.sh加上可读与执行权限,以./shell.sh来执行
  2. 直接以sh shell.sh的方式来直接执行。shbash的软连接。

?

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????file1file2是否为同一档案,可用在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

多重条件判定

????参数-aand,两状况同时成立)

????参数-oor,任何一个成立)

????参数!(反相状态)

?

判断符号[]

????将判断特征和被判断对象放入中括号中,不需要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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。