Linux下的Sheel脚本编写比较重视格式。
1.sheel 的编写,每个文件第一行开头需要加上 #!/bin/bash
不该有的空格绝对不能加,否则就会出错。
表示变量内容时,需要加上$,如:s=1,需要用到s的数值时,需要写成$s。
2.利用判断符号 [ ]
判断符号有着严格的格式,空格不能够省略,空格的位置如下(□代表空格)
[□条件□==□条件□]
中间可以是等号也可以是其他比较符号
3.sheel脚本的默认变量。
sehll脚本的文件名字就是 $0 ,在执行该脚本的时候后面跟的参数依次为:$1 $2 $3 ......
$#:代表后接的参数“个数”
$@:代表"$1"、"$2"、"$3",每个变量是独立的(用双引号括起来)
$*:代表““$1c$2c$3””,其中c为分隔字符,默认为空格键。
4.shift 造成参数变量号码偏移
shift 默认偏移一个 ,shift 后也可以接数字, 即出现shift 语句后,变量会去掉前面相对应数字个数的变量。
如 原来变量为 1 2 3 4 5 6 ,出现shift后变成 2 3 4 5 6 ,再出现shift 3 后 ,变成 5 6
5.if...then
if [条件判断式];then 条件成立时执行的句子 fi 反过来写,结束的意思注意:利用[ ] 写条件判断式的时候需要注意空格不能省略。
if...else
if [条件判断式];then 成立时执行语句 else 条件不成立时执行语句 fi fi不可省略
if [条件判断式1];then 语句1 elif [条件判断式2];then 语句2 else 语句3 fi
多重判断选择
case $变量名称 in "第一个变量内容") 执行语句 ;; "第二个变量内容") 执行语句 ;; esac
7.function
function 名字(){ 执行语句 }
8.for...do...done
for var in con1 con2 con3... do 执行语句 done
9.for...do...done的另一个写法
for ((初始值;限制值;步进值)) do 执行语句 done例:计算1+2+。。。
#!bin/bash s=0<span style="white-space:pre"> </span>#s赋初始值,不能有空格 read -p "input number:" x #x前面有一个空格 for ((i=1;i<=$x;i=i+1)) do s=$(($s+$i))<span style="white-space:pre"> </span>#$(())格式应该是这样 done echo "$s"
10.for do done,until do done
for do done
while [条件判断式] do 执行语句 done 结束语句
until [条件判断式] do 执行语句 done 结束语句
11.shell的追踪与调试
sh 后加参数 能够进行调试
-n:不用执行脚本,仅查询语句的问题
-v:再执行脚本前,先将脚本的内容输出的屏幕上
-x:将使用到的脚本内容显示到屏幕上
12.两个整数之间的判定
例如:test n1 -eq n2
-eq 两数值相等(equal)
-ne 两数值不能(not equal)
-gt n1大于n2(greater than)
-lt n1小于n2(less than)
-ge n1大于等于n2(greater than or equal)
-le n1小于等于n2(less than or equal)
13.文件的判断
1.关于文件名的“文件类型”判断
例如:test -e filename(满足条件为真,反之为假)
-e 该文件名是否存在
-f 该文件名是否存在且为文件
-d 该文件名是否存在且为目录
2.关于文件的权限检测
-r 检测该文件是否存在且具有“可读”的权限
-w 检测该文件是否存在且具有“可写”的权限
-x 检测该文件是否存在且具有“可执行”的权限
-u 检测该文件是否存在且具有“SUID”的属性
-g 检测该文件是否存在且具有“SGID”的属性
-k 检测该文件是否存在且具有“Sticky bit”的属性
-s 检测该文件是否存在且为“非空白文件”