shell - 变量,流程控制

Posted afrafre

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell - 变量,流程控制相关的知识,希望对你有一定的参考价值。

1. 查看内存 
 free -m
 free -m|awk '/^Mem/ print $3/$2*100'
2. 监控内存使用超过80 报警
free_use = free -m|awk '/Mem/ print $3/$2*100'
echo $free_use%.*   # 从后往前删,用%
if [ $free_use%.* -gt 80];then
    echo "内存超80"
fi

3. 创建10个文件,将txt 改为txt.bak, 把bak文件打包为123, 还原文件的名字
touch /backup/file1..10.txt
find /backup -iname "*.txt"
new_file = $(find /backup -iname "*.txt"|sed -r 's#(.*)#mv \1 \1.bak#g')|bash
打包
tar czf /backup/123.tar.gz $(find /backup -iname "*.bak")
还原
find /backup -iname "*.bak"|sed -r 's#(.*).bak#mv \1.bak \1#g'|bash
4 rename 修改名称
rename jpg jpeg *.jpg
5. string="Bigdata process is Hadoop,Hadoop,hadoop is open source project"
-- 1. 打印string 长度
-- 2. 删除字符串所有的Hadoop
-- 3. 替换第一个Hadoop 为linux
-- 4. 替换全部Hadoop 为Linux
用户输入1,2,3,4执行对应的功能,输入 q|Q 退出

shell 变量的运算

1. 整数运算, expr, $(()), $[]
+ - * / %
# expr $num1 + $num2
# echo $(( $num + $num1 ))
# $[ $num + $num1 ]
2. 小数运算
echo "2^4" |bc
echo "scale=1;6/4" |bc
echo "scale=2;6/4" |bc  
awk 'BEGINprint 1/2'

流程控制

if [ ];then
    echo
else
    echo
fi

if [ ];then
elif[ ];then
elif[ ];then
else
fi
#例1
#!/usr/bin/bash
if [ $# -ne 1 ];then
        echo "only one paramter"
        exit
fi
if grep "$1" /etc/passwd;then
        echo 'ok'
else
fi    

if语句中的文件比较

-r 文件存在且可读为真
-w 文件存在且可写
-x 文件存在且可执行
-d 文件存在且为目录
-f 文件存在且为普通文件
-e 文件或目录存在为真
-s 文件存在且至少有一个字符
加 ! 取反
if [ -f /etc/hosts ]; then
    echo $?
fi
[ -f /etc/hosts ] && echo $? || echo '不存在'

dir=/ect1/;[ -d $dir ] && tar zcf etc.tar.gz $dir || echo "$dir不存在"


# 备份mysql , 手动输入要备份的库名称
1. 提示用户输入 read
2. 输入数据库名称,执行mysqldump 备份
3. 备份到哪, /backup/mysql

User=root
Pwd=123
[ -d /backup/mysql ] || mkdir -p /backup/mysql
read -p " database name: " db
usr/bin/mysqldump -u$User -p$Pwd --single-transaction -R -B $db >/backup/mysql/db01_$(date +%F).sql

例: 检查服务是否运行的脚本

# 判断服务是否运行
#systemctl status sshd
# $# 表示传参的个数
if [ $# -ne 1 ];then
    echo "please enter 服务名"
    exit
fi 
systemctl status "$1" &>/dev/null
rc=$?
if [ $rc -eq 0 ];tehn
    echo "在运行"
else
    echo "没在运行"
fi

磁盘使用率超过80% 发邮件报警

# 查看磁盘
df -h
disk_use=$(df -h|grep "/$"|awk 'print $(NF-1)')
if [ $disk_use/\%/ -ge 80 ];then
    echo "大于80"
else
    echo "正常"
fi

以上是关于shell - 变量,流程控制的主要内容,如果未能解决你的问题,请参考以下文章

Linux实操篇—— Shell 编程入门变量运算符条件判断流程控制

shell - 变量,流程控制

shell 流程控制语句

Day09_Shell基本语法及流程控制

大数据之Shell:流程控制

shell 流程控制语句