shell脚本
shell脚本程序:以文件形式存放批量的linux命令集合,该文件能够被shell释放执行。通常由一段linux命令、shell命令、控制语句以及注释语句构成。
shell脚本特点:
- 第一行需指定用哪个程序来编译和执行脚本,如#!/bin/bash 或者#!/bin/sh
- 通常shell脚本以.sh为后缀
shell脚本执行权限:
- 有执行权限,可以./filename.sh
- 无执行权限,可以sh filename.sh
变量与引用
定义变量
- 定义变量时变量名不加美元符号
- 注意等号两边不能有空格如:name="wujiadong"
- 变量名不能以数字开头
- export命令可以使变量用于子进程
- 变量赋值时,若值中有空格,必须使用双引号括起来
使用变量
- 使用一个定义过的变量,只要在变量名前加美元符号。
- 显示变量:echo $name 或echo ${name}
- 清除变量:unset name
实例1
test11.sh
1 #!/bin/bash
2 v1="feigu"
3 export v2="wujiadong" #export命令可以使变量用于子进程
4
5 echo "显示v1:$v1"
6 echo "显示v2:$v2"
7
8 sh test12.sh
test12.sh
1 #!/bin/sh
2 echo "引用变量v1:$v1"
3 echo "引用变量v2:$v2"
执行sh.test11.sh
控制结构
判断
test -e filename 表示是否存在
-e 是否存在
-f 是否存在且为档案(file)
-d 是否存在且为目录(directory)
-r 是否存在且有可读权限
-w 是否存在且有可写权限
-x 是否存在且有可执行权限
两个数之间判断 :test n1 -eq n2
-eq 两数值相等(equal)
-ne 两数值不等(not equal)
-gt n1大于n2(greater than)
-lt n1小于n2(less than)
-ge n1大于等于n2(great than or equal)
-le n1小于n2(less than or equal)
判断字符串的数据
test -z string 判断字符串是否为0,string为空字符串,则为true
test -n string 判断字符串是否非为0,string为空字符串,则为false。注:-n可省略
test str1 = str2 判断str1是否等于str2,若相等,则回传true
test str1 != str2 判断str1是否不等于str2,若相等,则回传false
if else
if 条件 then 命令 fi 或者 if 条件 then 命令1 else 命令2 fi 或者 if 条件1 then 命令1 elif 条件2 then 命令2 else 命令3 fi
注意:这里elif是else if的缩写,但不支持else if的写法