Shell变量替换
在不改变原变量值的情况下,对值进行替换。
例:
案例1:
变量string=“Bigdata process is Hadoop, Hadoop is open source project”,
执行脚本后,打印输出string变量,并给出用户以下选项:
1)、打印string长度
2)、删除字符串中所有的Hadoop
3)、替换第一个Hadoop为Linux
4)、替换全部Hadoop为Linux 用户输入数字1|2|3|4,可以执行对应项的功能,
输入q则退出交互模式
这里用到了until循环
untli循环常用于当判断条件不成立时才进行循环,一旦条件成立就终止循环
格式为:
until 【条件测试操作】
do
判断式/命令序列
done
脚本内容:
#!/bin/bash
string="Bigdata process is Hadoop, Hadoop is open source project"
echo ${string} #输出变量
cat << EOF #输出所有选项
1)、打印string长度
2)、删除字符串中所有的Hadoop
3)、替换第一个Hadoop为Linux
4)、替换全部Hadoop为Linux
q)、退出
EOF #结尾一定要加上
until [ $action == q ] 2> /dev/null #untli循环常用于当判断条件不成立时才进行循环,一旦条件成立就终止循环
do read -p "输入你的选项 [ 1 | 2 | 3 | 4 | q ]" action
if [ $action == "1" ];then
echo "string长度为:${#string}" #echo ${#变量名} 会打印变量的长度
fi
if [ $action == "2" ];then
echo ${string//Hadoop/} #替换变量的旧字符串Hadoop为空(新字符串),全部替换
fi
if [ $action == "3" ];then
echo ${string/Hadoop/Linux} #替换变量的旧字符串Hadoop为Linux(新字符串),替换一个
fi
if [ $action == "4" ];then
echo ${string//Hadoop/Linux} #替换变量的旧字符串Hadoop为Linux(新字符串),全部替换
fi
done
运行脚本的效果:
案例2:
查看内存当前使用状态,如果使用率超过80%,就告警
思路梳理:
1.如何提取出内存
2.如何根据提取出的内存指标,
获取内存的百分比 free -m | awk '/^Mem/ {print $3/$2*100}'
3.将数据使用变量替换处理后再进行比对${memuse%.*}
脚本:
#!/bin/bash
memuse=$(free -m | awk '/^Mem/ {print $3/$2*100}')
if [ ${memuse%.*} -ge 80 ];then #从尾开始匹配,删除一个,就会获得了一个整数,然后进行比较 -ge大于 -eq等于 -ne 不等于
echo "Error 当前已使用内存: ${memuse}%"
else
echo "ok 当前已使用内存: ${memuse}%"
fi
执行脚本: