600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 【Linux脚本篇】shell变量的使用

【Linux脚本篇】shell变量的使用

时间:2022-11-17 23:58:27

相关推荐

【Linux脚本篇】shell变量的使用

目录

🍁shell变量替换

🍁定义变量

🍁shell变量运算

🍂整数运算

🍂小数运算

🦐博客主页:大虾好吃吗的博客

🦐专栏地址:Linux从入门到精通

shell变量替换

${变量#匹配规则} #从头开始匹配,最短删除

${变量##匹配规则} #从头开始匹配,最长删除

${变量%匹配规则} #从尾开始匹配,最短删除

${变量%%匹配规则} #从尾开始匹配,最长删除

${变量/旧字符串/新字符串} #替换字符串,仅替换第一个

${变量//旧字符串/新字符串} #替换字符串,替换全部

例1:从前往后删变量内容

[root@daxia ~]# Url=z3.[root@daxia ~]# echo $Urlz3.[root@daxia ~]# echo ${Url#*.} #删除以 . 分割的第一个字段[root@daxia ~]# echo ${Url##*.} #仅保留最后一个字段cn

例2:从后往前删变量内容

[root@daxia ~]# echo $Urlz3.[root@daxia ~]# echo ${Url%.*} #删除最后一个字段z3.[root@daxia ~]# echo ${Url%%.*} #仅保留第一个字段z3

例3:变量内容替换

[root@daxia ~]# echo $Urlz3.[root@daxia ~]# echo ${Url/z3/l4} #替换第一个z3为l4l4.[root@daxia ~]# echo ${Url//z3/l4}#替换全部z3为l4l4.

脚本题: 把/data下所有.txt文件,改名.bak,并tar包备份到/backup,最后解压还原文件名。合并起来做可能不理解,分开后尝试一下。

[root@daxia ~]# mkdir /data[root@daxia ~]# mkdir /backup[root@daxia ~]# touch /data/file{1..9}.txt[root@daxia ~]# vim rename.sh#!/bin/bashFile_txt=$(find /data -type f -iname "*.txt" |xargs > /data/txt.f)for a in $(cat /data/txt.f)domv $a $a.bakdone ​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)domv $b ${b%.*}done​​#执行脚本[root@daxia ~]# sh rename.shtar: 从成员名中删除开头的“/”

定义变量

happiness="towards the sea, with spring flowers blossoming,the the" 执行脚本,输出变量,并要求:

打印变量值字符串长度

删除所有的the

替换第一个the为that

替换所有the为that 用户按“1|2|3|4” ,输出相应选项内容,q|Q 退出

[root@daxia ~]# vim test1.sh#!/bin/bashhappiness="towards the sea, with spring flowers blossoming,the the"​echo $happiness​cat <<EOF1) 打印happiness长度2) 删除所有的the3) 替换第一个the为that4) 替换所有the为thatEOF​read -p "请输入数字 1|2|3|4,或 q|Q: " var​if [ $var == q ];thenexitfi​if [ $var == Q ];thenexitfi​if [ $var -eq 1 ];thenecho "当前happiness变量的长度是:${#happiness}"fi​if [ $var -eq 2 ];thenecho ${happiness//the/}fi​if [ $var -eq 3 ];thenecho ${happiness/the/that}fi​if [ $var -eq 4 ];thenecho ${happiness//the/that}fi

shell变量运算

整数运算

expr、$(())、$[],不支持小数运算

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

例1:

[root@daxia ~]# a=20[root@daxia ~]# b=10[root@daxia ~]# expr $a + $b30[root@daxia ~]# echo $(($a+$b))30[root@daxia ~]# echo $[$a+$b]30

例2:递增和递减

[root@daxia ~]# echo $((a++)) #表示先打印变量a,然后在加一位数值变成21,20[root@daxia ~]# echo $((a--))21[root@daxia ~]# echo $((++b)) #表示先加一位数值,在打印变量11[root@daxia ~]# echo $((--b))10[root@daxia ~]# echo $((100*(1+100)/2)) #求1加到100的和5050

小数运算

bc加”|“管道符使用,可以将前面打印的结果给bc工具处理。

[root@daxia ~]# yum -y install bc #安装bc工具​[root@daxia ~]# echo "2*4"2*4[root@daxia ~]# echo "2*4" | bc8[root@daxia ~]# echo "2^4" | bc16[root@daxia ~]# echo "scale=2;3/2" | bc1.50[root@daxia ~]# awk 'BEGIN{print 3/2}' #awk也可以计算1.5

脚本题: 例1:查看内存使用率,仅保留整数

[root@daxia ~]# vim mem.sh#!/bin/bashMem_use=$(free -m |grep ^M |awk '{print $3/$2*100}')if [ ${Mem_use%.*} -ge 80 ];thenecho "memory is overfull: ${Mem_use%.*}%"elseecho "memory is OK: ${Mem_use%.*}%"fi ​[root@daxia ~]# sh mem.shmemory is OK: 47%

例2:查看磁盘使用状态,使用率超出80%就报警 思路: 怎么查看磁盘 怎么提取使用率 整数判断

[root@daxia ~]# vim disk.sh​#!/bin/bashDisk=$(df -h |grep /$ |awk '{print $(NF-1)}')​if [ ${Disk%\%} -ge 80 ];thenecho "你的磁盘使用率过高:$Disk"else echo "你的磁盘使用率正常:$Disk"fi ​[root@daxia ~]# sh disk.sh你的磁盘使用率正常:31%

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。