[Shell编程学习路线]——深入理解Shell编程中的变量(理论与实例)

news2025/6/27 8:24:44

🏡作者主页:点击! 

🛠️Shell编程专栏:点击!

⏰️创作时间:2024年6月12日11点40分

🀄️文章质量:95分


文章目录

————前言————

1 自定义变量

🫠1.定义新的变量

🏖️2.查看和引用变量的值

🗻3.变量赋值的特殊操作

1.双引号(" ")

2.单引号(' ')

3.反撇号(``)

🧱4.read 命令


————前言————

变量是编程中的基本概念,也是Shell脚本中不可或缺的组成部分。通过使用变量,你可以存储和操作数据,从而编写更灵活和动态的脚本。无论是简单的字符串、数字,还是复杂的数据结构,变量都能帮助你更有效地管理信息。在本篇指南中,我们将详细讲解Shell中的变量类型、定义方法、使用技巧以及常见的变量操作,帮助你熟练掌握变量的使用,让你的Shell脚本更加高效和强大。让我们一同深入学习Shell中的变量世界吧!

各种 Shell 环境中都使用到了“变量”的概念。Shel 变量用来存放系统和用户需要使用的特定参数(值),而且这些参数可以根据用户的设定或系统环境的变化而相应变化。通过使用变量,Shel程序能够提供更加灵活的功能,适应性更强。 常见 She!l 变量的类型包括自定义变量、环境变量、位置变量、预定义变量。

1 自定义变量

自定义变量是由系统用户自己定义的变量,只在用户自己的Shel环境中有效,因此又称为本地变量。在编写 Shel 脚本程序时,通常会设置一些特定的自定义变量,以适应程序执行过程中的各种变化,满足不同的需要。

🫠1.定义新的变量

Bash 中的变量操作相对比较简单,不像其他高级编程语言(如 C/C++、Java 等)那么复杂在定义一个新的变量时,一般不需要提前进行声明,而是直接指定变量名称并赋给初始值(内容即可。

定义变量的基本格式为“变量名=变量值”,等号两边没有空格。变量名称需以字母或下划线开头,名称中不要包含特殊字符(如+、-、*、/、、?.%、&、#等)。例如,若要定义一个名为name的变量(值为 Python)和一个名为“Version”的变量(值为 2.7.13),可以执行以下操作。

[root@localhost ~] name=python
[root@localhost ~] version=2.7.13

🏖️2.查看和引用变量的值

通过在变量名称前添加前导符号“S”,可以引用一个变量的值。使用 echo 命令可以查看变量可以在一条 echo 命令中同时查看多个变量值,

[root@localhost ~] echo $name
python
[root@localhost ~] echo $version
2.7.13

当变量名称容易和紧跟其后的其他字符相混淆时,需要添加大括号“(}”将其括起来,否则将无法确定正确的变量名称。对于未定义的变量,将显示为空值。

[root@localhost ~] echo $name666

[root@localhost ~] echo ${name}666
python666

🗻3.变量赋值的特殊操作

在等号“=”后边直接指定变量内容是为变量赋值的最基本方法,除此之外,还有一些特殊的赋值操作,可以更灵活地为变量赋值,以便适用于各种复杂的管理任务。

1.双引号(" ")

双引号主要起界定字符串的作用,特别是当要赋值的内容中包含空格时,必须以双引号括起来其他情况下双引号通常可以省略。

[root@localhost ~] name=python 2.56		//错误的
-bash: 2.56: 未找到命令
[root@localhost ~] name="python 2.56"	//正确的
[root@localhost ~] echo $name
python 2.56

在双引号范围内,使用“$”符号可以引用其他变量的值(变量引用),从而能够直接调用现有变量的值来赋给新的变量。例如,执行以下操作可以调用变量Version 的值,将其赋给一个新的变量java,最终的值为“java7.7"。

在双引号范围内,使用“$”符号可以引用其他变量的值(变量引用),从而能够直接调用现有变量的值来赋给新的变量。例如,执行以下操作可以调用变量Version 的值,将其赋给一个新的变量java,最终的值为“java7.7"。

2.单引号(' ')

当要赋值的内容中包含$、\等具有特殊含义的字符时,应使用单引号括起来。在单引号的范围内,将无法引用其他变量的值,任何字符均作为普通字符看待。但赋值内容中包含单引号()时需使用\”符号进行转义,以免冲突。

[root@localhost ~] Version=7.7
[root@localhost ~] java='java $Version'
[root@localhost ~] echo $java
java $Version

3.反撇号(``)

反撒号主要用于命令替换,允许将执行某个命令的屏幕输出结果赋值给变量。反撇号括起来的范围内必须是能够执行的命令行,否则将会出错。例如,若要在一行命令中查找useradd 命令程序的位置并列出其详细属性,可以执行以下操作。

[root@localhost ~] grep=`grep "root" /etc/passwd `
[root@localhost ~] echo $grep
root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin

🧱4.read 命令

Shell 中的 read 命令 用于从标准输入读取数据并将其存储在变量中。它是一种在 shell 脚本和交互式 shell 中获取用户输入的常用方法。

基本用法

read [选项] 变量名
  • 变量名 是要将读取到的数据存储到的变量。
  • 选项用于指定 read 命令的行为。

常见选项

  • -p 提示符:在读取输入之前显示提示符。
  • -n N:读取 N 个字符后结束。
  • -t 秒数:等待输入的超时时间(以秒为单位)。
  • -s:隐藏输入内容。

[root@localhost ~] read hi
你好
[root@localhost ~] echo $hi
你好

为了使交互式操作的界面更加友好,提高易用性,read 命令可以结合“-p”选项来设置提示信息,以便告知用户应该输入什么内容等相关事项。例如,若希望提示用户输入备份文件的存放目录并将输入的路径信息赋值给变量 dir 可以执行以下操作。

[root@localhost ~] read -p "请输入你想要放置的目录:" dir
请输入你想要放置的目录:/root
[root@localhost ~] echo $dir
/root

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1822636.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

快速开发的UI框架:效率蹭蹭提高!!【送源码】

不知道各位用uniapp 开发移动端小程序或者网页,是否用UI框架。 我一般就用官方自带的,近期一个项目 用了uView, 感觉整体还不错,类似蚂蚁的风格。 特此推荐下,可以收藏一下,需要的时候记得来取哦! 介绍 …

快捷回复话术分享:如何应对顾客愤怒骂人?

在客服的日常工作中,面对情绪激动、甚至愤怒发泄骂人的顾客是常见的挑战。初入此行业的小伙伴们往往在遭遇顾客的激烈情绪时感到手足无措,不知道如何妥善回应。为此,本文将分享一些实用的快捷回复话术和技巧,帮助新手客服更好地处…

Vxe UI vxe-table custom 实现自定义列服务端保存,服务端恢复状态,实现用户个性化列信息保存

Vxe UI vue vxe-table custom 实现自定义列服务端保存,服务端恢复状态,实现用户个性化列信息保存 支持将自定义列状态信息,列宽、冻结列、列排序、列显示隐藏 等状态信息保存到本地或服务端 代码 实现自定义列状态保存功能,只需…

【启明智显分享】Model系列工业级HMI芯片:开源RISC-V+RTOS实时系统,开放!高效!

前言 「Model系列」芯片是启明智显针对工业、行业以及车载产品市场推出的系列HMI芯片,主要应用于工业自动化、智能终端HMI、车载仪表盘、两轮车彩屏仪表、串口屏、智能中控、智能家居、充电桩显示屏、储能显示屏、工业触摸屏等领域。此系列具有高性能、低成本的特点…

生命在于学习——Python人工智能原理(3.4)

三、深度学习 7、过拟合与欠拟合 过拟合和欠拟合是所有机器学习算法都要考虑的问题。 (1)基本定义 a、欠拟合 欠拟合是指机器学习模型无法完全捕获数据集中的复杂模式,导致模型在新数据上的表现不佳,这通常是由于模型过于简单…

能在电脑桌面记笔记的软件是什么 电脑笔记软件

在这个数字化高速发展的时代,电脑已成为我们日常工作和学习的必备工具。而对我来说,电脑桌面不仅仅是一个简单的工作界面,更是一个思考和创造的平台。我时常需要在工作时快速记录一些重要信息或灵感,这时候,能在电脑桌…

机器学习与数据挖掘知识点总结(二)分类算法

目录 1、什么是数据挖掘 2、为什么要有数据挖掘 3、数据挖掘用在分类任务中的算法 朴素贝叶斯算法 svm支持向量机算法 PCA主成分分析算法 k-means算法 决策树 1、什么是数据挖掘 数据挖掘是从大量数据中发现隐藏在其中的模式、关系和规律的过程。它利用统计学、机器学…

我的考研经历

当我写下这篇文章时,我已经从考研 的失败中走出来了,考研的整个过程都写在博客日志里面了,在整理并阅读考研的日志时,想写下一篇总结,也算是为了更好的吸取教训。 前期日志模板:时间安排的还算紧凑&#x…

视频美颜工具技术探秘:直播美颜SDK的应用与发展

今天,笔者将深入探讨直播美颜SDK的应用场景和发展趋势,揭示其背后的技术奥秘和潜力。 一、直播美颜SDK的基本原理 直播美颜SDK其基本原理包括以下几个方面: 人脸检测与特征定位 肤色分析与调整 瑕疵修复与细节增强 滤镜和特效应用 二、…

在ubuntu中恢复误删除的文件

1、安装 TestDisk 在 Ubuntu 上,可以使用以下命令安装 TestDisk: sudo apt-get install testdisk2、查询你删除的文件所在那个分区 #查询分区 df -h #我这里是/dev/sda2 #也可以使用下面命令查看具体哪个分区 lsblk3、查询该分区是什么系统类型 sudo …

微软bing英文地图公司地址标注

实现效果如下&#xff1a; 通过微软Bing地图嵌入代码&#xff0c;以在网站中展示公司地址&#xff0c;使用鼠标滚动可缩放或点击拖动地图。 直接上代码&#xff0c;根据自己的需求修改相关信息即可。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN…

语法08 C++ 数据类型之间的强制转换

强制类型转换 强制类型转换&#xff0c;就是把一种数据类型转化为另一种指定的数据类型。 它是一种临时的转换。 强制类型转换格式 格式&#xff1a;(数据类型) (表达式) 即&#xff1a;(要被转换成的类型&#xff09;&#xff08;被转换的式子&#xff09;; 注意&#x…

SCT82A32 是一款 100V 电压模式控制同步降压控制器

主要特征 ◦ 5.5V-100V 宽输入范围 ◦ 0.8V-60V 可调输出电压 ◦ 0.8V1% 参考电压 ◦ 最低占空比下的40ns 最小 tON ◦ 最高占空比下的150ns 最小 tOFF • 100 KHz 到 1.2 MHz 开关频率 ◦ 时钟同步输入/输出功能 ◦ 可选择二极管仿真或 FPWM • 7.5V 门极驱动器 ◦ 2.3A …

Kettle作业优化指南:在 TASKCTL 统一任务调度平台的实践技巧

ETL世界里的调度难题&#xff0c;是否让你夜不能寐&#xff1f;Kettle 作为开源ETL工具的佼佼者&#xff0c;虽然功能强大&#xff0c;但其调度监控的短板却让无数从业者头疼不已。今天&#xff0c;我要带你走进一个全新的调度世界——自动化任务编排工具 TASKCTL 它不仅解决了…

如何用Vue3和p5.js打造一个令人惊叹的3D球体在线展示

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 使用 p5.js 创建交互式 3D 图形 应用场景介绍 p5.js 是一个用于创建交互式图形和动画的 JavaScript 库。它被广泛用于教育、艺术和设计领域&#xff0c;让开发者可以轻松创建具有吸引力的可视化效果。 代码基…

怎么改变图片分辨率dpi数值?图片改分辨率的在线技巧

在上传图片的时候除了图片大小、尺寸等要求之外&#xff0c;修改图片分辨率也是比较常见的一个问题&#xff0c;需要将图片按照平台的要求修改完成后才可以正常使用。当遇到图片dpi的数值不满足使用需求的时候&#xff0c;有什么方法能够更加快捷的修改图片dpi呢&#xff1f;今…

如何通过SOLIDWORKS教育版提高学生技能培养未来人才?

在当今这个科技日新月异的时代&#xff0c;掌握先进的数字化工具已经成为了一项需备的技能。作为一款功能强大的3D CAD软件&#xff0c;SOLIDWORKS教育版正是一个帮助学生提升技能、培养未来人才的重要工具。那么&#xff0c;如何通过SOLIDWORKS教育版提高学生技能呢&#xff1…

VirtualBox配置双网卡实现宿主机和虚拟机相互访问以及虚拟机外网访问

目录 一&#xff1a;背景 二&#xff1a;实现 三&#xff1a;总结 一&#xff1a;背景 在VirtualBox中配置虚拟机以实现本地主机远程登录、访问外网以及虚拟机之间的相互访问&#xff0c;是一种常见的虚拟化实践&#xff0c;适用于多种场景&#xff0c;如开发、测试和远程工…

鸿蒙 游戏来了 鸿蒙版 五子棋来了 我不允许你不会

团队介绍 作者:徐庆 团队:坚果派 公众号:“大前端之旅” 润开鸿生态技术专家,华为HDE,CSDN博客专家,CSDN超级个体,CSDN特邀嘉宾,InfoQ签约作者,OpenHarmony布道师,电子发烧友专家博客,51CTO博客专家,擅长HarmonyOS/OpenHarmony应用开发、熟悉服务卡片开发。欢迎合…

打造信任和忠诚:增加和改善客户评价的10种方法

客户推荐和产品评价可以成为您最强大的销售工具之一。超过70%的消费者表示他们在购买前会查看产品评价&#xff0c;近63%的消费者表示他们更有可能从有产品评级和评价的网站购买。社会认可可以安抚犹豫的购物者&#xff0c;提供额外的背景信息&#xff0c;并通过确保买家对购买…