回顾
执行脚本的方式
source my_first.sh #在当前shell环境中运行,退出脚本后变量也可继续使用
. my_first.sh #在当前shell环境中运行,退出脚本后变量也可继续使用
bash my_first.sh #开启一个子shell运行,退出脚本后子shell消失,变量也就消失
./my_first.sh #开启一个子shell运行,退出脚本后子shell消失,变量也就消失
echo 与转义符的概念
“ ” 在$等特殊符号前加 \ 原样输出
‘ ’ 不支持特殊的符号,所见即所得
变量在引用时前面必须加 $ 符
用于数值计算的命令
(( )) 仅支持一些基本的整数运算
取数值前要加 $
实例:
#!/bin/bash #调用bash
printf_one(){
printf "please enter an integer\n" #错误提醒
exit 1
}
read -p "please input a number" num #read -p接受用户输入的数字存入num中
if [ -n "'echo $num|sed's/[0-9]//g''" ] #判断用户输入的是否为纯数字
then
printf_one
fi
read -p "please input an operatar:" opt #接受用户输入的运算符到opt中
if [ "$opt" != "+" ] && [ "$opt" != "-" ] && [ "$opt" != "*" ] && [ "$opt" != "/" ] #判断是否为正确的运算符
then
echo "please input +-*/" exit 1
fi
read -p "please input a number" num2 #read -p接受用户输入的数字存入num2中
if [ -n "'echo $num2|sed's/[0-9]//g''" ] #判断用户输入的是否为纯数字
then
printf_one
fi
echo "${num}${opt}${num2}=$((${num}${opt}${num2}))" #开始计算
输出结果
let 运算符
let类似于(( )),但是(( ))效率更高
实例:
num=1
let num=num+2
echo num
expr 命令
基于空格传入参数,支持特殊符号
expr 3 + 2 #3+2=5
expr 3 \* 2 #3*2=6
expr length 12234 #length 判断后面字符串长度
expr koniaoer.top ":" ".*\.top" #expr模式匹配,输出符合.后面的最后坐标
实例
脚本示例
开发检查nginx服务是否运行
1.先定义变量,用于储存变化的值,便于后期维护
#!/bin/bash
Checkurl(){
timeout=5
fails=0
success=0
while true
do
wget --timeout=${timeout} --tries=1 https://www.koniaoer.top/ -q -0 /dev/null
if [ $? -ne 0 ]
then
let fails++
else
let success++
fi
if [ $success -ge 1 ]
then
echo "运行中"
exit 0
fi
if [ ${fails} -ge 2 ]
then
echo "状态异常"
exit
fi
done
Chekurl #调用函数
}
评论区