shell脚本入门之【变量的定义】

news2024/11/26 0:44:49

  🏅我是默,一个在CSDN分享笔记的博主。📚📚 

🌟在这里,我要推荐给大家我的专栏《shell》。🎯🎯

🚀无论你是编程小白,还是有一定基础的程序员,这个专栏都能满足你的需求。我会用最简单易懂的语言,带你走进代码的世界,让你从零开始,一步步成为编程大师。🚀🏆

🌈让我们在代码的世界里畅游吧!🌈

🎁如果感觉还不错的话请记得给我点赞哦!🎁🎁

💖期待你的加入,一起学习,一起进步💖💖


shell变量的简介

1.什么是shell变量?

在Shell脚本中,变量是用来存储数据或值的符号名称。通常,Shell变量用于存储字符串、数字或文件名等数据类型。Shell变量是动态的,可以根据需要随时更改其值

在Shell脚本中,定义一个变量时,无需指定变量类型。Shell会自动根据变量的值进行类型推断。

2.shell脚本的变量命名以及内容输出

  1. 文件名只能使用字母、数字和下划线(_),不能包含其他特殊字符;
  2. 文件名应该清晰明了、有意义,能够反映出脚本的功能或用途;
  3. 一般建议以.sh为扩展名,表示该文件为Shell脚本;
  4. 文件名不应该太长,建议不超过20个字符。
  5. 不能使用bash里的关键字(可用help命令查看保留关键字)。

实例展示

有效的 Shell 变量名示例如下:

RUNOOB
LD_LIBRARY_PATH
_var
var2

无效的变量命名:

?var=123
user*name=runoob

 变量值的打印

  //定义变量   name="哈哈哈"
  //查看变量值  echo $name   echo {$name}

变量补充

变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:

实例

for skill in Ada Coffe Action Java; do
    echo "I am good at ${skill}Script"
done

如果不给skill变量加花括号,写成echo "I am good at $skillScript",解释器就会把$skillScript当成一个变量(其值为空),代码执行结果就不是我们期望的样子了。

推荐给所有变量加上花括号,这是个好的编程习惯。

已定义的变量,可以被重新定义,如:

实例

your_name="tom"
echo $your_name
your_name="alibaba"
echo $your_name

这样写是合法的,但注意,第二次赋值的时候不能写$your_name="alibaba",使用变量的时候才加美元符($)。

只读变量

使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变

下面的例子尝试更改只读变量,结果报错:


 // 定义一个只读变量  readonly NAME="binjie09"
 //  输出变量值 echo "My name is: $NAME"    My name is: binjie09
 //再次访问  readonly NAME="binjie9"

删除变量

使用 unset 命令可以删除变量。语法:

unset 变量名字

变量被删除后不能再次使用。unset 命令不能删除只读变量

3.变量的类型

运行shell时,会同时存在三种变量:

  • 1) 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
  • 2) 环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
  • 3) shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行

 

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

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

相关文章

vue.js实现科室无限层选中和回显

一、效果展示&#xff1a; 展示可选层级 查看选中的值 二、实现&#xff1a; <el-form-item label"相关科室:" prop"orgId"><el-cascaderpopper-class"cascader-my":options"orgOptions":show-all-levels"false"…

文献管理软件Zotero之入门篇(1)

文章目录 0、前言1、下载安装1.1、下载安装主程序1.2、下载安装浏览器插件 2、给Zotero添加插件以实现更多快捷功能2.1、插件安装方式2.2、插件获取方式2.2.1、直接在官网插件也下载2.2.2、在Zotero中文社区插件页下载 3、总结 0、前言 一直以来想找一个文献管理帮手&#xff…

二进制代码反汇编逆向工具:IDA Pro(WinMac)v7.7 汉化版

IDA Pro是一款交互式的、可编程的、可扩展的、多处理器的、交叉Windows或Linux WinCE MacOS平台主机来分析程序。它被公认为最好的花钱可以买到的逆向工程利器&#xff0c;已经成为事实上的分析敌意代码的标准并让其自身迅速成为攻击研究领域的重要工具。 IDA Pro的特点主要包括…

海康Visionmaster-全局脚本:通过全局脚本获取通讯输 入的参数并赋值给全局变量

全局脚本根据外部通讯输入的数值赋值给全局变量&#xff0c;实现输入与全局变量之间的数值绑定。&#xff08;一般应用于定位、标定等需要外界物理值的场景)。 第一步&#xff0c;在 vm 通讯管理中设置好通讯设备&#xff0c;连接 第二步&#xff0c;根据通讯设备、接收的信息…

基于CMT2119A 无线发射芯片的物联网技术研究

随着物联网技术的快速发展&#xff0c;无线通信设备的需求也越来越大。CMT2119A无线发射芯片作为一种先进的芯片技术&#xff0c;被广泛应用于物联网中。本文通过对CMT2119A无线发射芯片的研究&#xff0c;探讨了其在物联网技术中的应用&#xff0c;分析了其特点和优势&#xf…

【Rust 日报】2023-11-05 xAI使用Rust

马斯克xAI正式使用Rust 在深度学习研究的前沿&#xff0c;必须像构建数据集和学习算法一样谨慎地构建可靠的基础设施。为了创建 Grok&#xff08;一个类ChatGPT的产品&#xff09;&#xff0c;xAI构建了一个基于 Kubernetes、Rust 和 JAX 的自定义训练和推理套件。 xAI认为&…

【Linux】拓展:进程管理常见的7大问题

目录 一、如何判断一个程序是单线程还是多线程 二、僵尸进程是什么&#xff0c;有什么危害&#xff0c;如何解决 三、如何找回删掉的文件 四、删除文件以后&#xff0c;空间不释放 五、遇到一个病毒&#xff08;如死循环病毒&#xff09;&#xff0c;解决思路 六、机器开机…

《研发效能(DevOps)工程师》课程简介(四)丨IDCF

由国家工业和信息化部教育与考试中心颁发的职业技术证书&#xff0c;也是国内首个研发效能&#xff08;DevOps&#xff09;职业技术认证&#xff0c;内涵1000页学习教材2000分钟的课程内容讲解460多个技术知识点300多道练习题。涵盖【组织与协作】、【产品设计与运营】、【开发…

数据库系统概念系列 - 数据库系统的历史

从商业计算机的出现开始&#xff0c;数据处理就一直推动着计算机的发展。事实上&#xff0c;数据处理自动化早于计算机的出现。Herman Hollerith 发明的穿孔卡片&#xff0c;早在20世纪初就用来记录美国的人口普查数据&#xff0c;并且用机械系统来处理这些卡片和列出结果。穿孔…

javascript中的new原理及实现

在js中&#xff0c;我们通过new运算符来创建一个对象&#xff0c;它是一个高频的操作。我们一般只是去用它&#xff0c;而很少关注它是如何实现的&#xff0c;它的工作机制是什么。 1 简介 本文介绍new的功能&#xff0c;用法&#xff0c;补充介绍了不加new也同样创建对象的方…

HDD最后的冲刺:大容量硬盘的奋力一搏

1.引言 在上一篇文章&#xff08;微软Azure云数据中心工作负载分享&#xff1a;SSD与HDD&#xff0c;何去何从&#xff1f;&#xff09;中&#xff0c;我们提到在应对SSD QLC/PLC大容量的挑战中&#xff0c;HDD也是在不断的努力&#xff0c;推出HAMR&#xff0c;SMR等新介质。…

【已解决】ModuleNotFoundError: No module named ‘dgl‘

禁止使用下面方法安装DGL,这种方法会更新你的pytorch版本&#xff0c;环境越变越乱 pip install dgl 二是进入DGL官网&#xff1a;Deep Graph Library (dgl.ai)&#xff0c;了解自己的配置情况&#xff0c;比如我cuda11.8&#xff0c;ubuntu&#xff0c;当然和linux是一样的 …

卡尔曼滤波之二:Python实现

卡尔曼滤波之二&#xff1a;Python实现 1.背景描述2.构建卡尔曼滤波公式2.1 预测2.2 更新 3.代码实现3.1 输入值3.2 pykalman包实现3.3 不使用Python包实现3.4 效果可视化 参考文献 了解了卡尔曼滤波之一&#xff1a;基本概念&#xff0c;可以结合代码来理解下卡尔曼滤波的2个预…

STM8单片机在医疗设备中的应用和优势

STM8单片机作为一种高性能、低功耗的微控制器&#xff0c;在医疗设备领域得到了广泛的应用。本文对STM8单片机在医疗设备中的应用进行了研究&#xff0c;探讨了它在医疗设备中的优势和特点&#xff0c;并分析了其在提升医疗设备性能、精确控制和数据处理等方面的应用效果。 一…

接口幂等性详解

1. 什么是幂等性 幂等性指的是对同一个操作的多次执行所产生的影响与一次执行的影响相同。无论操作执行多少次&#xff0c;系统状态都应该保持一致。 在计算机科学和网络领域中&#xff0c;幂等性通常用来描述服务或操作的特性。对于RESTful API或HTTP方法&#xff0c;一个幂…

【Linux】服务器与磁盘补充知识,硬raid操作指南

服务器硬件 cpu 主板 内存 硬盘 网卡 电源 raid卡 风扇 远程管理卡 1.硬盘尺寸: 目前生产环境中主流的两种类型硬盘 3.5寸 和2.5寸硬盘 2.5寸硬盘可以通过使用硬盘托架后适用于3.5寸硬盘的服务器 但是3.5寸没法转换成2.5寸 2.如何在服务器上制作raid 华为服务器为例子做…

DAY46 139.单词拆分 + 多重背包 + 背包问题总结篇

139.单词拆分 题目要求&#xff1a;给定一个非空字符串 s 和一个包含非空单词的列表 wordDict&#xff0c;判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明&#xff1a; 拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 思路 完全背…

NVMe FDP会被广泛使用吗?

文章开头&#xff0c;我们需要先了解固态硬盘的读写机制。我们知道&#xff0c;固态硬盘的存储单元是由闪存颗粒组成的&#xff0c;无法实现物理性的数据覆盖&#xff0c;只能擦除然后写入&#xff0c;重复这一过程。因而&#xff0c;我们可以想象得到&#xff0c;在实际读写过…

04-SpringBoot的基础配置及其配置文件分类,解决Yaml文件失效问题

SpringBoot的配置 SpringBoot是用来提高Spring程序的开发效率的,使用SpringBoot后几乎不用做任何配置功能就有了,因为很多功能已经有默认配置帮我们做好了 配置文件的相关配置 在一个项目中不同的技术对应不同的配置文件并且这些配置文件的格式也不统一 SpringBoot提供了一…

打印由*组成的菱形

如图所示&#xff0c;这是我们要用代码所实现的图形。 那么我们该如何实现这个呢&#xff0c;对于这种题&#xff0c;我们只有静下心来找其中的规律了。 我们先来看看它的上面部分&#xff1a; 它是由空格和星号组成的&#xff0c;那么我们是不是可以先打印空格然后再打印星号…