【跟晓月学shell脚本】掌握shell脚本变量实战案例

news/2024/11/29 21:41:07/

前言

上篇文章我们探讨了shell脚本变量的基本原理和概念,本篇我们基于上面的内容增加一些实战。

如果你还没有学习shell脚本的变量理论,可以点击链接:【跟晓月学shell脚本】掌握shell脚本变量原理及概念

可以关注我的云原生社区:云原生社区
也可以关注我的英语社区:从零开始学英语

文章目录

  • 前言
  • 一. 环境变量的案例
  • 二. 位置变量脚本案例
  • 三. 自定义脚本案例
    • 3.1 自定义变量的案例
    • 3.2 变量的命名规则
    • 3.3 变量命名规则测试
    • 3.4 单引号和双引号的区别
  • 总结

🏠个人主页:我是沐风晓月
🧑个人简介:大家好,我是沐风晓月,阿里云社区博客专家
😉😉 💕 座右铭:先努力成长自己,再帮助更多的人,一起加油进步
🍺🍺🍺 💕欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信😘

一. 环境变量的案例

环境变量在日常工作中,我们用的比较多,使用环境变量,我们可以很轻松的调用一些常用的参数。

[root@mufeng41 ~]# cat ev.sh 
#!/bin/bash# 设置环境变量
export MY_VAR="Hello, World!"
export ANOTHER_VAR=42# 打印环境变量
echo "MY_VAR: $MY_VAR"
echo "ANOTHER_VAR: $ANOTHER_VAR"# 使用环境变量进行计算
result=$((ANOTHER_VAR + 10))
echo "Result: $result"

执行结果:

[root@mufeng41 ~]# ./ev.sh 
MY_VAR: Hello, World!
ANOTHER_VAR: 42
Result: 52

二. 位置变量脚本案例

位置变量是指通过命令行参数传递给Shell脚本的值,示例:

这里的位置变量和特殊变量一起使用:


#!/bin/bash# 打印脚本名称
echo "脚本名称: $0"# 打印位置参数个数
echo "位置参数个数: $#"# 打印所有位置参数
echo "所有位置参数: $@"# 打印第一个位置参数
echo "第一个位置参数: $1"# 打印第二个位置参数
echo "第二个位置参数: $2"# 打印所有位置参数的总和
sum=0
for arg in "$@"; dosum=$((sum + arg))
done
echo "所有位置参数的总和: $sum"

我们在脚本中遍历了所有的位置参数,并计算它们的和

执行结果:

[root@mufeng41 ~]# chmod +x wz.sh 
[root@mufeng41 ~]# ./wz.sh 10 20 30
脚本名称: ./wz.sh
位置参数个数: 3
所有位置参数: 10 20 30
第一个位置参数: 10
第二个位置参数: 20
所有位置参数的总和: 60
[root@mufeng41 ~]# 

三. 自定义脚本案例

3.1 自定义变量的案例

#!/bin/bash# 自定义变量
name="John Doe"
age=30
location="New York"# 打印自定义变量的值
echo "姓名: $name"
echo "年龄: $age"
echo "位置: $location"# 自定义变量的计算
result=$((age + 10))
echo "年龄增加10后的结果: $result"# 字符串连接
greeting="Hello"
message="$greeting, $name! Welcome to $location."
echo "$message"

执行结果:

[root@mufeng41 ~]# ./hello.sh 
姓名: John Doe
年龄: 30
位置: New York
年龄增加10后的结果: 40
Hello, John Doe! Welcome to New York.

3.2 变量的命名规则

  1. 变量由字母或者下划线打头,不允许数字开头,后面由字母,数字或者下划线组成,并且大小写意义不同。
  2. 在使用变量时候,需要在变量名字前面加$
  3. 等号两边不能有空格
  4. 变量值的叠加,使用${}
  5. 命令替换,使用$()或者反引号
  6. 在bash中,变量默认类型都是字符串类型,无法直接进行数值运算

3.3 变量命名规则测试

1. 变量名测试:

[root@ecs-c13b ~]# 2eee=4      ## 不能以数字开头
-bash: 2eee=4: command not found
[root@ecs-c13b ~]# name=zhangshan   ### 大小写的区别
[root@ecs-c13b ~]# NAME=lisi
[root@ecs-c13b ~]# echo $name
zhangshan
[root@ecs-c13b ~]# echo $NAME
lisi

2. 关于${} 的使用,拼接测试

[root@ecs-c13b ~]# ctest=mysql
[root@ecs-c13b ~]# echo $ctest
mysql
[root@ecs-c13b ~]# echo $ctest-txt
mysql-txt
[root@ecs-c13b ~]# echo $ctest.db.log-txt
mysql.db.log-txt
[root@ecs-c13b ~]# echo {$ctest}db.log
{mysql}db.log
[root@ecs-c13b ~]# echo ${ctest}db.log
mysqldb.log

3. 能不能不加{}

[root@ecs-c13b ~]# echo $ctestdb.log-txt
.log-txt

4. 使用反引号或者$()

[root@ecs-c13b ~]# echo date
date
[root@ecs-c13b ~]# echo $(date)
Wed Aug 5 15:53:03 CST 2020
[root@ecs-c13b ~]# echo `date`
Wed Aug 5 15:53:15 CST 2020
[root@ecs-c13b ~]# 

5. 特殊用法

[root@ecs-c13b ~]# date +"%Y-%m"
2020-08
[root@ecs-c13b ~]# date +"%Y-%m-%d-%H%M%S"
2020-08-05-155600
[root@ecs-c13b ~]# 

3.4 单引号和双引号的区别

在日常应用中我们经常用到单引号和双引号,今天我们来看看他们有什么区别:

‘’ 在单引号中所有的字符包括特殊字符($,‘’,`和\)都将解释成字符本身而成为普通字符。

“” 在双引号中,除了$, ‘’,`和\以外所有的字符都解释成字符本身,拥有“调用变量的值”、“引用命令”和“转义符”的特殊含义

注:\转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。如\$将输出“$”符号,而不当做是变量引用

[root@ecs-c13b ~]# name=mufengxiaoyue
[root@ecs-c13b ~]# echo $name
mufengxiaoyue 
[root@ecs-c13b ~]# echo '$name'
$name
[root@ecs-c13b ~]# echo "$name"
mufengxiaoyue 

单引号输出的是变量本身,双引号输出的是变量的值。

总结

本文主要讲解了shell脚本变量的实战案例,希望对你有用, 我们下篇文章再见。
💕 好啦,这就是今天要分享给大家的全部内容了,我们下期再见!
💕 本文由沐风晓月原创,首发于CSDN博客, 博客主页:mufeng.blog.csdn.net
💕 日拱一卒无尽有,功不唐捐终入海
💕 喜欢的话记得点赞收藏哦


http://www.ppmy.cn/news/487574.html

相关文章

【机器学习】树模型的三种序列化方式的区别(模型存储大小、序列化所用内存、序列化速度)

文章目录 一、导读二、模型运行例子三、运行内存计算四、保存和加载4.1 jsonpickle4.2 pickle4.3 模型自带 五、实验5.1 模型存储大小对比实验5.2 运行的memory对比实验 六、序列化时间对比七、源代码八、总结 一、导读 本文总结常用树模型: rf,xgboost…

php抓取网页特定div区块及图片,

1. 取得指定网页內的所有图片&#xff1a; <?php //取得指定位址的內容&#xff0c;並储存至text $textfile_get_contents(http://yourweb/); //取得第一個img标签&#xff0c;並储存至阵列match&#xff08;regex语法与上述同义&#xff09; preg_match(/<img[^>…

突然发现CSDN变得不一样了【建议】【活动】

突然发现CSDN变得不一样了【活动】 前言推荐突然发现CSDN变得不一样了关于上传代码包关于上传视频关于运行代码关于插入代码1关于插入代码2关于社区的建立关于社区的管理关于此次活动的评选关于排行突然发现说明一下关于我 最后 前言 2023-6-19 23:34:04 本文章仅用于参加 20…

Mysql漏洞处理之升级版本到5.7.42过程指导手册

一、背景 某次安全漏扫&#xff0c;发现MySQL大量漏洞&#xff0c;基于Mysql之用于内网&#xff0c;且版本确实有点旧&#xff0c;考虑升级&#xff0c;综合漏洞分析&#xff0c;只能升级到最新版5.7.42和8.0.33&#xff0c;现场环境&#xff1a;Mysql 5.7.28、5.7.20和mysql&…

Python+Requests+Unittest接口自动化测试

(1)接口自动化测试的意义、前后端分离思想 接口自动化测试的优缺点&#xff1a; 优点&#xff1a; 测试复用性。 维护成本相对UI自动化低一些。 为什么UI自动化维护成本更高&#xff1f; 因为前端页面变化太快&#xff0c;而且UI自动化比较耗时&#xff08;比如等待页面元素的…

我心中世界上最好的语言是PHP,别不信【偷笑】

文章目录 一、前言1.1 最适合的语言2.2 流行的语言2.3 Java和PHP2.4 PHP的性能2.5 关于PHP2.6 作文思路概览 二、PHP的优势2.1 跨平台2.2 开发运行环境搭建方便2.3 强大的包管理工具2.4 拥有优秀的代码调试工具xdebug2.5 上手快&#xff0c;学习成本低2.6 丰富的企业级框架2.7 …

Spring学习笔记一

目录 一、Spring简介二、IOC控制反转2.1入门案例2.3 Bean的常用属性配置 三、DI依赖注入3.1 set方法注入3.2 通过构造器注入3.3 复杂类型属性注入 四、Lombok六、配置文件6.1读取properties文件6.2 使用配置文件中的值 七、低频知识7.1 bean的配置7.1.1 name属性7.1.2 lazy-ini…

小白到运维工程师自学之路 第四十一集 (shell脚本的基本使用)

一、概述 Shell是一种命令行解释器&#xff0c;它是一种编程语言&#xff0c;用于在操作系统上执行命令和脚本。Shell语言是一种脚本语言&#xff0c;它可以用于自动化任务、批处理、系统管理和编写简单的程序。Shell语言通常用于Unix和Linux操作系统中&#xff0c;但也可以在其…