shell脚本基础

1.shell基础

1.1 简介

shell介绍

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脚本完成

 

 

posted @ 2023-07-15 14:58  万溪汇海  阅读(8)  评论(0编辑  收藏  举报