Shell脚本学习
基础部分
1.Shell脚本首行需要指定命令解释器,格式为
#! /bin/bash
这里以常用的bash为例,实际使用时可以指定为/bin目录下的一个命令,比如/bin/rm,执行脚本时有两种方式,一种是给脚本加上执行权限,用./ScriptName的方式执行
chmod +x ScriptName #加执行权限的方式有多种
./ScriptName
另外一种是用指定的/bin目录下面的某一个命令来执行该脚本,这个脚本不需要加执行权限,以/bin/bash为例,可以这样
/bin/bash ScriptName
在使用第二种方式时,脚本中的如果第一行为指定命令解释器的语句则会被当作注释,不会被执行。这种方式下,要指定正确的命令。比如说一个自删除的脚本如下:

如果使用/bin/bash来执行这个脚本:

如果使用加权限的方式来执行这个脚本:

2.特殊符号
# 注释符号,可以被转义打印,也可以用来做参数替换和数制转换,特殊情况后面介绍
; 命令分割符,一行中有多个命令时用来分割命令,一行只有一个命令时可以被舍弃
;; 用来终止shell脚本中的case语句,后面会介绍case语句
. 有多种含义,其中比较重要的是和source命令相同含义
* 匹配0个或多个任意字符
? 匹配一个任意字符
[] 匹配一个方括号中出现字符,例如[1-9],只匹配0-9这10个数字中的任意一个
`或$() 命令代换,例如下面两行是相同意义的
DATE=`date`
DATE=$(date)
$(()) 算术代换,例如
VAR=45
echo $(($VAR+3))
\ 转义字符或表示续行
' 字符串的界定符,单引号内的所有值都被认为是字符串的一部分,包括回车和转义字符
" 字符串的界定符,双引号内可以使用转义字符。
Shell脚本语法
1.条件测试test或[]:
运行结果:
常见的判断命令有下面这几个:
-d $DIR 判断DIR是否存在且为目录,如果存在且为目录返回真
-f $FILE 判断FILE是否存在且为文件,如果存在且为文件返回真
-z $STRNG 判断STRING的长度是否为0,如果为0则返回真
-n $STRING 判断STRING的长度是否不为0,如果不为0则返回真
$STRING1 = $STRING2 相等判断,普通语句中表示赋值,在测试命令中test或[]表示相等判断
$STRING1 != $STRING2 不等判断
-eq 相等判断
-ne 不等判断
-lt 小于判断
-le 小于等于判断
-gt 大于判断
-ge 大于等于判断
! 逻辑非
-a 逻辑与
-o 逻辑或
2.控制语句
if/then/elif/else/fi


浙公网安备 33010602011771号