本章内容主要是讲了shell script的基础用法。后续会阅读《Linux Shell Scripting Tutorial v2.0》,加深对shell 编程的理解和运用。
1、一般第一行的#!/bin/bash宣告这个script使用的bash的语法!当这个程序被执行时,他就能够加载bash相关配置文件,并且执行bash来使我们底下的指令能够执行。
一般除了第一行的#!是用来宣告shell之外,其他的#都是注释。
2、test 测试功能 可以用来测试某些文档以及其属性 参数众多
3、[](中括号)来进行数据的判断。使用中括号必须要特别注意,因为中括号在很多地方使用,包括通配符和正则表达式等等。如果在bash的语法当中使用中括号作为shell的判断式时,必须要注意中括号的两端要用空格字符来分割。如[ “$HOME” == "$MAIL" ]
在中括号 [] 内的每个组件都需要有空格键来分割;
在中括号内的变数,最好都以双引号括号起来;
在中括号内的常数,最好都以单或双引号括号起来。
中括号的使用方法跟test几乎是一模一样,只是中括号比较常用在条件判断if...then...fi中。
4、script针对参数已经有设定好的一些变量名称了。
eg: /path/to/filename opt1 opt2 opt3 opt4
$0 $1 $2 $3 $4
另外:还有一些在script中可以使用的特殊变量
$# :代表后接的参数“个数” ; $@:代表["$1" "$2" "$3" "$4"]之意,每个变量是独立的;
$*: 代表["$1"c"$2"c"$3"c"$4"]其中c为分隔符,默认为空格键
5 shift 偏移变量 后面接数字
6、判断
=======》if的用法
if [判断条件] ;then
执行内容
elif [判断条件];then
执行内容
else
执行内容
fi
=======>case的用法
case $变量名 in
"第一个变量名")
程序段
;;
"第二个变量名")
程序段
;;
*)
最后一个程序段
;;
esac #case的颠倒哦~
7、netstat : 可以查询目前主机有开启的网络服务端口口 netstat -tuln | grep ":80" 寻找80端口的服务。
8、函数功能 function
function fname()
{ 程序段}
function也是拥有内建变量的,他的内建变量与shell script很类似,但是这里容易出错。fuction fname(){}中的$0,$1...等等的表示与shell script 的有些不同。其实就是参数。
9 不定循环
while do done , until do done
while [condition] 条件不成立时终止。
do
程序段落
done
until [condition] 条件成立时终止。
do
程序段落
done
10 固定循环
for var in con1,con2,con3...
do
程序段
done
另外一种形式:
for (( 开始值; 限制值; 执行步阶 ))
do
程序段
done
11 shell script 的追踪与debug
-n :不要执行script,仅查询语法的问题 eg.sh -n filename.sh
-v :在执行script之前,先将script的内容输出到屏幕上
-x: 将使用到的script内容显示到屏幕上。