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/bash
if [ $1 == $2 ]
then
echo "hello"
fi
if [ $2 -gt $3 ]
then
echo "dayu"
fi
[root@niceday opt]# ./test2.sh 10 10 50
hello
if [ $1 -lt 20 ]
then
echo "hello"
elif [ $1 -lt 40 ]
then
echo "大于20小于40"
else
echo "其他值"
fi
[root@niceday opt]# ./test2.sh 40
其他值
[root@niceday opt]# ./test2.sh 30
大于20小于40
for判断:
var=`rpm -qa | grep mysql`
for x in $var
do
echo "my data:$x"
done
while判断:
while(($nums <= 5))
do
echo "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
]
返
回
f
a
l
s
e
。
−
n
检
测
字
符
串
长
度
是
否
不
为
0
,
不
为
0
返
回
t
r
u
e
。
[
−
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