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

🏡作者主页:点击! 

🛠️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.rhkb.cn/news/349509.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue聊天发送Emoji表情

在用web端写聊天发送表情的功能中,使用web端有系统自带的unicode表情会出现每端不统一的情况,不好用不能统一,在这里我想到了一个非常好的思路,可以解决这个问题! 那就是发送表情用图片的形式呈现,然后发给…

计算机网络 —— 运输层(UDP和TCP)

计算机网络 —— 运输层(UDP和TCP) UDPTCPUDP和TCP的异同点相同点不同点 我们今天来看运输层的两个重要的协议——UDP和TCP UDP UDP,全称为用户数据报协议(User Datagram Protocol),是互联网中一种核心的…

STM32自己从零开始实操05:接口电路原理图

一、TTL 转 USB 驱动电路设计 1.1指路 延续使用芯片 CH340E 。 实物图 实物图 原理图与封装图 1.2数据手册重要信息提炼 1.2.1概述 CH340 是一个 USB 总线的转接芯片,实现 USB 与串口之间的相互转化。 1.2.2特点 支持常用的 MODEM 联络信号 RTS(请…

【递归、搜索与回溯】综合练习一

综合练习一 1.找出所有子集的异或总和再求和2.全排列 II3.电话号码的字母组合4.括号生成 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃😃 1.找…

Unity射击游戏开发教程:(27)创建带有百分比的状态栏

创建带有弹药数和推进器百分比的状态栏 在本文中,我将介绍如何创建带有分数和百分比文本的常规状态栏。 由于 Ammo Bar 将成为 UI 的一部分,因此我们需要向 Canvas 添加一个空的 GameObject 并将其重命名为 AmmoBar。我们需要一个文本和两个图像对象,它们是 AmmoBar 的父级。…

认识Django框架,使用Django 2024新手创建Django项目,使用编译工具:Pycharm

Django简单介绍 Django 是一个用 Python 编写的开源 web 应用框架,旨在促进快速开发、维护和部署高效、可扩展的 web 应用程序。它是遵循模型-模板-视图(MTV)设计模式的一个高级框架,尽管有时也被描述为遵循MVC(模型-…

Python数据分析与机器学习在医疗诊断中的应用

文章目录 📑引言一、数据收集与预处理1.1 数据收集1.2 数据预处理 二、特征选择与构建2.1 特征选择2.2 特征构建 三、模型选择与训练3.1 逻辑回归3.2 随机森林3.3 深度学习 四、模型评估与调优4.1 交叉验证4.2 超参数调优 五、模型部署与应用5.1 模型保存与加载5.2 …

Ubuntu基础-vim编辑器

目录 前言: 一. 安装 二. 配置 三. 基本使用 1.使用 Vim 编辑文本文件 2.代码编辑 3.多窗口编辑 四. 总结 前言: Vim 是从 VI 发展出来的一个文本编辑器,具有代码补充、错误跳转等功能,在程序员中被广泛使用。它的设计理念是命令的组合&#xff…

调用华为API实现车牌识别

目录 1.作者介绍2.华为云车牌识别2.1车牌识别技术2.2华为云OCR 3.实验过程3.1获取API密钥3.2Python代码实现3.3实验结果 参考链接 1.作者介绍 袁明懿,男,西安工程大学电子信息学院,2023级研究生 研究方向:机器视觉与人工智能 电子…

全方位·多层次·智能化,漫途水库大坝安全监测方案

党的十九届五中全会提出,到2025年前,完成新出现病险水库的除险加固,配套完善重点小型水库雨水情和安全监测设施,实现水库安全鉴定和除险加固常态化。 加快推进小型水库除险加固。加快构建气象卫星和测雨雷达、雨量站、水文站组成…

基于STM32和人工智能的智能家居监控系统

目录 引言环境准备智能家居监控系统基础代码实现:实现智能家居监控系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统4.4 用户界面与数据可视化应用场景:智能家居环境监控与管理问题解决方案与优化收尾与总结 1. 引言 随着智能家居技术的发展&…

【STM32】飞控设计

【一些入门知识】 1.飞行原理 【垂直运动】 当 mg>F1F2F3F4,此时做下降加速飞行 当 mg<F1F2F3F4,此时做升高加速飞行 当 mgF1F2F3F4 ,此时垂直上保持匀速飞行。 【偏航飞行】 ω 4 ω 2 ≠ ω 1 ω 3 就会产生水…

maven学习小结

目录结构 maven为项目提供一个标准目录结构 环境配置 下载maven包后解压,配置解压目录的bin到path变量,然后终端mvn -v,有回显则表明maven安装成功 pom POM,Project Object Model,项目对象模型,是一个xm…

MySQL—多表查询—联合查询

一、引言 之前学习了连接查询。现在学习联合查询。 union:联合、联盟 对于union查询,就是把多次查询的结果合并起来,形成一个新的查询结果集 涉及到两个关键字:union 和 union all 注意: union 会把上面两个SQL查询…

人脸匹配——OpenCV

人脸匹配 导入所需的库加载dlib的人脸识别模型和面部检测器读取图片并转换为灰度图比较两张人脸选择图片并显示结果比较图片创建GUI界面运行GUI主循环运行显示全部代码 导入所需的库 cv2:OpenCV库,用于图像处理。 dlib:一个机器学习库&#x…

Python第二语言(十四、高阶基础)

目录 1. 闭包 1.1 使用闭包注意事项 1.2 小结 2. 装饰器:实际上也是一种闭包; 2.1 装饰器的写法(闭包写法) :基础写法,只是解释装饰器是怎么写的; 2.2 装饰器的语法糖写法:函数…

自动化数据驱动?最全接口自动化测试yaml数据驱动实战

前言 我们在做自动化测试的时候,通常会把配置信息和测试数据存储到特定的文件中,以实现数据和脚本的分离,从而提高代码的易读性和可维护性,便于后期优化。 而配置文件的形式更是多种多样,比如:ini、yaml、…

Vue项目实践:使用滚动下拉分页优化大数据展示页面【通过防抖加标志位进行方案优化】

Vue项目实践:使用滚动下拉分页优化大数据展示页面 前言 传统的分页机制通过点击页码来加载更多内容,虽然直观,但在处理大量数据时可能会导致用户体验不佳。相比之下,滚动下拉分页能够在用户滚动到页面底部时自动加载更多内容&…

使用difflib实现文件差异比较用html显示

1.默认方式&#xff0c;其中加入文本过长&#xff0c;需要换行&#xff0c;因此做 contenthtml_output.replace(</style>,table.diff td {word-wrap: break-word;white-space: pre-wrap;max-width: 100%;}</style>)&#xff0c;添加换行操作 ps&#xff1a;当前te…

人工智能和机器学习这两个概念有什么区别?

什么是人工智能&#xff1f; 先来说下人工智能&#xff0c;人工智能&#xff08;Artificial Intelligence&#xff09;&#xff0c;英文缩写为AI&#xff0c;通俗来讲就是用机器去做在过去只有人能做的事。 人工智能最早是由图灵提出的&#xff0c;在1950年&#xff0c;计算机…