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

这篇具有很好参考价值的文章主要介绍了【Linux脚本篇】shell变量的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

目录

🍁shell变量替换

🍁定义变量

🍁shell变量运算

🍂整数运算

🍂小数运算


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

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

shell变量替换

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

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

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

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

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

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

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

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

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

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

例3:变量内容替换

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

脚本题: 把/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/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
​
​
#执行脚本
[root@daxia ~]# sh rename.sh
tar: 从成员名中删除开头的“/”

定义变量

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

  1. 打印变量值字符串长度

  2. 删除所有的the

  3. 替换第一个the为that

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

[root@daxia ~]# vim test1.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变量运算

整数运算

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 + $b
30
[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" | bc
8
[root@daxia ~]# echo "2^4" | bc
16
[root@daxia ~]# echo "scale=2;3/2" | bc
1.50
[root@daxia ~]# awk 'BEGIN{print 3/2}'              #awk也可以计算
1.5

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

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

例2:查看磁盘使用状态,使用率超出80%就报警 思路: 怎么查看磁盘 怎么提取使用率 整数判断文章来源地址https://www.toymoban.com/news/detail-457962.html

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

到了这里,关于【Linux脚本篇】shell变量的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • lv3 嵌入式开发-5 linux shell脚本编程(概念、变量、语句)

     Shell脚本是利用 shell 的功能所写的一个程序。这个程序是使用纯文本文件,将一些 shell 的语法与命令(含外部命令)写在里面,搭配正则表达式、管道命令与数据流重定向等功能  第一个Shell脚本文件 变量来源于数学,是计算机语言中能储存计算结果或能表示值的抽象概念

    2024年02月10日
    浏览(79)
  • 【Linux】shell 脚本基础使用

    在终端中输入命令可以完成一些常用的操作,但是我们都是一条一条输入命令,比较麻烦,为了解决这个问题,就会涉及到 shell 脚本,它可以将很多条命令放到一个文件里面,然后直接运行这个文件即可。 shell 脚本类似 Windows 的批处理文件 shell 脚本就是将连续执行的命令写

    2024年04月23日
    浏览(46)
  • shell_73.Linux使用新 shell 启动脚本

    每次启动新 shell,bash shell 都会运行.bashrc 文件。①对此进行验证,可以使用这种方法:在 主目录下的.bashrc 文件中加入一条简单的 echo 语句,然后启动一个新 shell。 .bashrc 文件通常也借由某个 bash 启动文件来运行,因为.bashrc 文件会运行两次:一次是当 用户登录 bash shell 时,

    2024年02月05日
    浏览(53)
  • Linux:shell脚本:基础使用(2)

    格式1:test  条件表达式 格式2:[  条件表达式  ]  (前后至少应有一个空格) 常用的测试操作符 -d:测试是否为目录(Directory) -e:测试目录或文件是否存在(Exist) -f:测试是否为文件(File) -r:测试当前用户是否有权限读取(Read) -w:测试当前用户是否有权限写入(Writ

    2024年02月13日
    浏览(51)
  • Linux shell编程学习笔记44:编写一个脚本,将md5sum命令执行结果保存到变量中,进而比较两个文件内容是否相同

    在  Linux shell编程学习笔记42:md5sum https://blog.csdn.net/Purpleendurer/article/details/137125672?spm=1001.2014.3001.5501 中,我们提到编写一个在Linux系统下比较两个文件内容是否相同的脚本。 基本思路是: 其中有两个难点: 1.文件的md5值的获取 2.md5值的比较 对于第1个难点,我们的解决办法是

    2024年04月10日
    浏览(72)
  • Shell脚本——变量

    目录 一.Shell脚本的变量基本介绍 1.Shell脚本的变量是什么? 2.变量的作用 3.变量作用范围 4.删除变量 二.变量的类型 1.自定义变量 1.1 命名要求 1.2 定义新的变量 1.3 查看定义的变量的值 1.4 赋值时使用符号 1.5 从键盘输入内容为变量赋值 2.环境变量 3.只读变量 4.位置变量 5.预定

    2024年02月07日
    浏览(38)
  • Shell脚本的变量

    目录 shell脚本变量: 1.变量的介绍: 2.变量的作用: 3.变量的类型 : 4.自定义变量 : (1)自定义变量命名要求: (2)定义与查看变量: (3)赋值时使用的引号 : ​编辑(4)从键盘输入内容为变量赋值: (5) 变量的运算 : (6)浮点数运算 : 5.环境变量: 1.环境变

    2024年01月24日
    浏览(32)
  • Linux使用shell脚本判断cpu架构

    sh文件示例如下: #!/bin/sh SCRIPTDIR=\\\"$( cd \\\"$( dirname \\\"$0\\\"  )\\\" pwd  )\\\" dlldir=$SCRIPTDIR cd `dirname $0` get_arch=`arch` dotnetName=\\\"dotnet\\\" if [[ $get_arch =~ \\\"x86_64\\\" ]];then     echo \\\"this is x86_64\\\"     if [ ! -f dotnet ];then         tar xvf aspnetcore-runtime-3.1.30-linux-x64.tar.gz     fi     dotnetName=\\\"./dotnet\\\" elif [[

    2023年04月26日
    浏览(60)
  • Linux 环境使用定时任务执行shell脚本

    前言:Linux添加定时任务需要依赖crond服务,如果没有该服务,需要先安装:yum -y install crontabs 1、crond服务相关命令介绍         启动crond服务: service crond start         停止crond服务: service crond stop         重启crond服务: service crond restart         重载crond服务

    2024年02月16日
    浏览(63)
  • shell_45.Linux在脚本中使用 getopt

    在脚本中使用 getopt 目前看起来相当不错。但是,getopt 命令中仍然隐藏着一个小问题。看看这个例子: getopt 命令并不擅长处理带空格和引号的参数值。它会将空格当作参数分隔符,而不是根 据双引号将二者当作一个参数。好在还有另外的解决方案。

    2024年02月08日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包