shell脚本基础
1.shell基础
1.1 简介
shell介绍
1.2 解释器
解释器是一种命令解释器,主要作用是对命令进行运行和解释,将需要执行的操作传递给操作系统内核并执行
指定解释器
#!/usr/bin/python3
不指定,默认就是这个
#!/bin/bash #这是一个shell脚本 #by li echo 'hello,shell'
脚本执行
方式1:sh test.sh
chmod +x test.sh
方式2:./test.sh
1.3 变量
shell的变量不需要先声明,可以直接使用
a=15,但是注意:等号两侧没有空格
调用变量:$a或者${a}
echo $a
echo ${a}
改为:echo${a}a
echo $aa
$?,判断上一条命令是否成功,0表示成功,其他表示不成功
echo $?
$0,返回脚本的文件名称
$1-$9,返回对应的参数值
$*,返回所有的参数值
$#,返回参数的个数
#!/bin/bash #by ren echo "脚本名称:$0" echo "第一个参数是:$1" echo "第二个参数是:$2" echo "一共有多少参数:$#" echo "这些参数是:$"
1.4 常用符号
> 会覆盖原有的内容
>> 不会覆盖原有的内容
; 分号,执行多条命令,cat 1.txt;ls
| 管道符,ps -ef|grep xxx
&& 前面的命令执行成功,后面的才可以执行 cat test.txt && ls
|| 前面的命令执行失败,后面的才可以执行
"" 双引号中的变量输出变量值
'' 单引号中的变量输出本身
#!/bin/bash echo "第一个参数:$1" echo '第一个参数:$1'
` ` 输出命令结果
a=` date` ;echo $a
1.5 条件判断
1.5.1 文件目录
语法:[ 判断表达式 ]
注意,[]内部左右都要有空格
-e 目标是否存在
[ -e test.sh ] || touch test.sh
-d 是否为路径
[ -d /root/test ] && echo "/root/test存在"
-f 是否为文件
[ -f test.sh ] && echo "是文件"
1.5.2 权限
-r 是否有读取权限
-w 是否有写入权限
-x 是否有执行权限
[ -x test.txt ] && echo '有执行权限'
1.5.3 比较
整数值
-eq 等于(equal)
-ne 不等于(not equal)
-gt 大于(greater than)
-lt 小于(lesser than)
-ge 大于或等于(greater or equal)
-le 小于或等于(lesser or equal)
字符串
= 相等
!= 不等于
1.5.4 if
用法一:if
if[ 条件判断 ];
then
执行动作
fi
用法二:if-else
if[ 条件判断 ];
then
执行动作
else
执行
#!/bin/.bash
if[ $1 -eq $2 ]
then
echo"$1等于$2"
else
echo "$1不等于$2"
fi
sh test1.sh 1 2
1.5.5 case
case 变量 in
值1)
执行动作1;;
值2)
执行动作2;;
...
*)
执行动作;;
esac
#!/bin/bash
echo '请输入你要购买的商品编号:'
read proid
case ${proid} in
'1')
echo '笔记本电脑'
;;
'2')
echo '华为手机'
;;
*)
echo '输入有误请重新输入'
;;
esac
1.6 输入输出
语法:
read -参数
-p:给出提示符
#!/bin/bash read -p "请输入密码:" passwword echo '你输入的密码是:' ${password}
1.7 循环
1.7.1 for
用法一
for 变量名 in `命令`
do
执行动作
done
#!/bin/bash #依次打印1-10 for i in `seq 1 10` do echo $1 sleep 1 done
`seq 1 10` 等价于$(seq 1 10)
用法二
for(( 条件 ))
do
执行动作
done
#!/bin/bash sum=0 for((i=1;i<11;i++)) do sum=$(($sum+$i)) done echo $sum
运算要么用中括号要么用两层圆括号
1.7.2 while
while[ 条件判断式 ]
do
执行动作
done
#!/bin/bash sum=0 n=1 while[ $n -lt 11 ]; do sum=$(($sum+$n)) n=$(($n+1)) done echo $sum
1.8 练习
1.8.1 针对redis服务,写一个shell脚本,实现开机自启动,定期检查服务是否可用
1.8.2 jmeter在linux非gui执行脚本前,要删除jtl文件、清空html报告目录内容,写shell脚本完成