shell脚本2

文章介绍了Shell中变量的替换规则,包括从头和尾部删除匹配字符串的方法,以及替换字符串的语法。还提供了两个脚本示例,一个用于批量重命名和备份文本文件,另一个则展示如何处理字符串内容。此外,文章还讨论了Shell中的整数和小数运算,如expr、$(())和$[],以及bc工具进行小数运算,并给出了内存使用率和磁盘使用率检查的脚本示例。
摘要由CSDN通过智能技术生成

1.shell变量替换 **

${变量#匹配规则}            从头开始匹配,最短删除
${变量##匹配规则}            从头开始匹配,最长删除
${变量%匹配规则}            从尾开始匹配,最短删除
${变量%%匹配规则}            从尾开始匹配,最长删除
${变量/旧字符串/新字符串}    替换字符串,仅替换第一个
${变量//旧字符串/新字符串}    替换字符串,替换全部

例1:从前往后删变量内容
    Qh_url=mirrors.tuna.tsinghua.edu.cn
    echo $Qh_url
    echo ${Qh_url#*.}    #删除.分隔的第一个字段
    echo ${Qh_url##*.}  #仅保留最后一个字段
    
例2:从后往前删变量内容
    Qh_url=mirrors.tuna.tsinghua.edu.cn
    echo $Qh_url
    echo ${Qh_url%.*}    #删除最后一个字段
    echo ${Qh_url%%.*}    #仅保留第一个字段
    
例3:变量内容替换
    Qh_url=mirrors.tuna.tsinghua.edu.cn
    echo $Qh_url
    echo ${Qh_url/u/U}
    echo ${Qh_url//u/U}
    


脚本题:
1、把/data下所有.txt文件,改名.bak,并tar包备份到/backup,最后解压还原文件名
mkdir /data  
touch /data/file{1..9}.txt 

vim rename.sh
#!/bin/bash
File_txt=$(find /data -type f -iname "*.txt" |xargs > /data/txt.f)
for a in $(cat /data/txt.f)
do
    mv $a $a.bak
done 

tar zcf /backup/file.tar.gz  /data/*.bak

File_txt=$(find /data -type f -iname "*.bak" |xargs > /data/bak.f)
for b in $(cat /data/bak.f)
do
    mv $b ${b%.*}
done

2、定义变量,happiness="towards the sea, with spring flowers blossoming,the the"
    执行脚本,输出变量,并要求:
    1) 打印变量值字符串长度
    2) 删除所有的the
    3) 替换第一个the为that
    4) 替换所有the为that
    用户按“1|2|3|4” ,输出相应选项内容。
    
vim happiness.sh    **
#!/bin/bash
happiness="towards the sea, with spring flowers blossoming,the the"

echo $happiness

cat <<EOF
1) 打印happiness长度
2) 删除所有的the
3) 替换第一个the为that
4) 替换所有the为that
EOF

read -p "请输入数字 1|2|3|4,或    q|Q: " var

if [ $var == q ];then
    exit
fi

if [ $var == Q ];then
    exit
fi

if [ $var -eq 1 ];then
    echo "当前happiness变量的长度是:${#happiness}"
fi

if [ $var -eq 2 ];then
    echo ${happiness//the/}
fi

if [ $var -eq 3 ];then
    echo ${happiness/the/that}
fi

if [ $var -eq 4 ];then
    echo ${happiness//the/that}
fi


======================================
shell变量运算

1.整数运算,expr、$(())、$[],不支持小数运算 **

a+b     加
a-b        减
a*b     乘(expr计算时,用 \* )
a/b     除
a%b     余 

例1:
    a=20
    b=10
    expr $a + $b 
    echo $(( $a + $b ))
    echo $[ $a + $b ]
    
例2:递增和递减
    echo $((a++))
    echo $((a--))
    echo $((++b))
    echo $((--b))
    echo $((100*(1+100)/2))        求1到100之和
    
    
2. 小数运算,bc工具 *
yum -y install bc 

echo "2*4" |bc 
echo "2^4" |bc
echo "scale=2;3/2" |bc 
awk 'BEGIN{print 3/2}'


脚本题:
例1:查看内存使用率,仅保留整数
vim mem_use.sh    ***
#!/bin/bash
#得到内存的使用占比 使用量 / 总量 * 100
Mem_use=$(free -m |grep ^M |awk '{print $3/$2*100}')
Mem_use=${mem%.*}
#根据内存的使用占比,判断如果大于80 会提示内存已满
if [ ${Mem_use%.*} -ge 80 ];then
    echo "memory is overfull: ${Mem_use%.*}%"
else
    echo "memory is OK: ${Mem_use%.*}%"
fi 

例2:脚本输出系统版本、内核版本平台、虚拟平台、主机名、网卡ip


例3:查看磁盘使用状态,使用率超出80%就报警
思路:
    怎么查看磁盘
    怎么提取使用率
    整数判断
    
vim disk_use.sh    ***
#!/bin/bash
Disk=$(df -h |grep /$ |awk '{print $(NF-1)}')

if [ ${Disk%\%} -ge 80 ];then
    echo "你的磁盘使用率过高:$Disk"
else 
    echo "你的磁盘使用率正常:$Disk"
fi 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值