shell脚本
shell脚本是包含一系列命令的文本文件
用于重复性操作–事务批处理–自动化运维–定时任务执行
#!为一个约定的标记
放到linux里先授权,后执行
1.打印:
变量打印
#!/bin/bash
echo \'hello world\'
name=\"zs\"
echo \"hello,\"${name}
echo ${name}
在单引号里无法取到变量,双引号能对${name}取变量
echo \"hello,${name}\"
echo \'hello,${name}\'
打印命令:
name= rpm -qa | grep mysql
echo $name
[root@niceday opt]# ./test2.sh mysql-community-release-el7-5.noarch mysql-community-common-5.6.48-2.el7.x86_64 mysql-community-client-5.6.48-2.el7.x86_64 mysql-community-server-5.6.48-2.el7.x86_64 mysql-community-libs-5.6.48-2.el7.x86_64
2.计算:
数值计算:
v1=123
v2=456
((var=$v1 + $v2))
echo \"var is:$var\"
[root@niceday opt]# ./test2.sh
var is 579
3.流程控制:
if判断:#!/bin/bashif [ $1 == $2 ]thenecho \"hello\"fiif [ $2 -gt $3 ]thenecho \"dayu\"fi
[root@niceday opt]# ./test2.sh 10 10 50hello
if [ $1 -lt 20 ]thenecho \"hello\"elif [ $1 -lt 40 ]thenecho \"大于20小于40\"elseecho \"其他值\"fi
[root@niceday opt]# ./test2.sh 40其他值[root@niceday opt]# ./test2.sh 30大于20小于40
for判断:
var=`rpm -qa | grep mysql`for x in $vardoecho \"my data:$x\"done
while判断:
while(($nums <= 5))doecho \"num: $nums\"let \"nums++\"# ((nums=$nums + 1))done
二:运算符:
数值关系运算符:
-eq 等于—-equal
-ne 不等于—-not equal
-gt 大于—-greater than
-lt 小于—-less than
-le 小于或等于 —-less or equal
-ge 大于或等于—-greater pr equal
布尔运算符:
-o 或运算
-a 与运算
$0为程序本身 $1-9代表顺序参数编号−大于10使用括号9代表顺序参数编号 -大于10使用括号9代表顺序参数编号−大于10使用括号{10}
字符串运算符:
判断字符串相等直接=即可
-z 检测字符串长度是否为0,为0返回 true。 [ -z a]返回false。−n检测字符串长度是否不为0,不为0返回true。[−n“a ] 返回 false。-n 检测字符串长度是否不为 0,不为 0 返回 true。 [ -n “a]返回false。−n检测字符串长度是否不为0,不为0返回true。[−n“a” ] 返回 true。
$ 检测字符串是否为空,不为空返回 true。
字符串之间判断是用=,而不是==。
文件运算符:
-e 判断文件是否存在-exist
-d 判断是不是目录 -directory
-r 判断文件是不是可读 -read
-w 判断文件是否可写 -write
-x 判断文件是否可执行 -excute
-f 判断是不是普通文件(既不是目录,也不是设备文件)-file
-s 判断文件是否为空 -size