shell脚本的变量与应用

news2024/9/21 21:21:47

        Shell脚本是一种解释性语言,用于编写自动化任务和系统管理脚本。在Shell脚本中,变量用于存储和操作数据。变量在脚本中可以被赋值、读取和修改。    

        在shell脚本中,变量用于存储数据,可以是数字、字符串或其他类型的值。可以使用变量来存储中间结果、用户输入或从命令输出中获取的值,以便在脚本的不同部分进行引用和使用。

命令赋值法
  1. 直接赋值:使用=符号将值赋给变量,如name="John"

  2. 命令替换:使用反引号 ` 或者 $() 将命令的输出结果赋给变量,如dateStr=$(date +%Y-%m-%d)

  3. 环境变量赋值:使用export命令将变量导出为环境变量,供其他脚本或程序使用。

注意:定义变量时,变量名只能以字母或者"_"作为开头

变量名=变量值

num1="1"

num2="2"

echo "num1=$num1,num2=$num2"

变量删除

可以使用 unset 命令来删除变量。 unset 命令用于移除一个或多个变量的定义。

name="张三"
echo $name
张三
unset name
echo $name

通过标准输入来定义变量

格式:read 获取标准输入的内容给 变量

read -p "请输入一个数值来赋予变量:" i

echo $i

环境变量
变量的范围划分
  • 全局变量(Global Variables):全局变量在整个脚本中都是可见和可用的。它们可以在脚本的任何位置定义,并且可以在整个脚本的任何地方使用。全局变量对整个脚本的所有函数和命令都是可见的。
  • 局部变量(Local Variables):局部变量只在定义它们的函数或命令中可见和可用。它们的作用范围被限制在特定的函数或命令中,不能在其他函数或命令中使用。
  • 本地变量:生效范围为当前shell进程中某代码片断,通常指函数。 只能在定义它们的函数/脚本内 部中使用。

查看所有的环境变量

env

其中用处最为广泛的环境变量为

$PATH 表示可执行文件的默认路径

$USER 表示用户名称

$HOME 表示用户的宿主目录

$LANG 表示语言和字符集

$PWD 表示当前所在工作目录

环境变量的特性

  • 可以使子进程(包括孙子进程)继承父进程的变量,但是无法让父进程使用子进程的变量。
  • 一旦子进程修改从父进程继承的变量,将会新的值传递给孙子进程。
  • 一般只在系统配置文件中使用,在脚本中较少使用。

环境变量的配置文件

全局配置文件:

/etc/profile,修改此文件会作用于所有用户。

用户独立的配置文件:

env ~/.bash_profile,修改这个文件只作用于当前用户。

位置变量

        位置变量是$后以数字为结尾的的变量代表着每一个变量和标准输入参数的位置。(数字是以1为开头。 1-9是正常跟在$后面即可。当数字大于或等于10,要用{ }进行使用,区别shell误识别。)

[root@localhost test]#vim test.sh

#!/bin/bash
echo ”第一个变量值为: $1“
echo ”第二个变量值为: $2“
echo ”第三个变量值为: $3“
echo ”第四个变量值为: $4“
echo ”第五个变量值为: $5“

自定义变量

$0 :获取当前脚本的名称(如果是软链接,显示软链接文件名)。

$@ :将所有参数作为独立的字符串返回。

$* :将所有参数作为单个字符串返回。

$# :获取当前命令行参数的个数。

$_ :获取上一个命令或脚本的最后一个参数。

$$ :获取当前Shell进程的PID。

$? :获取上一次命令的退出状态,返回0表示成功,非0表示错误。

        以上只是一些常见的变量用法,shell脚本中还有更多高级的变量操作和用法,可以根据具体需求进行学习和使用。

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

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

相关文章

基于yolov8的道路病害道路裂缝道路坑洞检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的道路病害检测系统,特别是针对道路裂缝和坑洞的检测,是一种高效、准确的智能解决方案。该系统利用YOLOv8这一先进的深度学习算法,通过深度神经网络对图像进行特征提取和分类,实现对道路病害的实时检测和…

期权会不会爆仓?如果期权亏了,会亏到倒欠吗?!

今天带你了解期权会不会爆仓?如果期权亏了,会亏到倒欠吗?!期权作为一种金融衍生工具,已经被广大的投资者所接受,并广泛地应用于风险管理等诸多领域。 期权会爆仓吗? 对于期权而言,…

杭州网站建设网页手机版

杭州作为中国的电子商务之都,网站建设在杭州可谓是异常繁荣。随着移动互联网的兴起,越来越多的企业开始注重网页的手机版建设,以满足用户在移动设备上的浏览需求。杭州网站建设公司也专门针对手机版网页进行优化,提供更好的用户体…

AUTOSAR Adaptive与智能汽车E/E架构发展趋势

AUTOSAR Adaptive是一个面向现代汽车应用需求的标准,特别适用于那些需要高计算能力和灵活性的应用。以下是AUTOSAR Adaptive的典型特性: 高计算能力:AUTOSAR Adaptive支持使用MPU(微处理器),这些处理器的性…

2024上半年上海产业转移分析报告

近日,由工业和信息化部举办的2024中国产业转移发展对接活动成功举办。作为全国唯一一个聚焦产业转移的“国字号”盛会,中国产业转移发展对接活动旨在通过跨区域的产业合作与对接,推动产业有序转移和区域协调发展,目前已于四川、贵…

无人机螺旋桨常见材料!!!

一、常见材料及其特点 复合材料(如玻璃纤维、碳纤维) 特点:轻量化、坚韧、高效。这些复合材料由玻璃纤维、碳纤维等在树脂基体中制成,可以显著提高无人机的飞行效率和稳定性。碳纤维复合材料尤其具有重量轻、抗张强度高、耐腐蚀…

Leetcode面试经典150题-83.删除链表中的重复元素

解法都在代码里,不懂就留言或者私信 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val …

Linux-目录结构和Vim编辑器

目录 Linux目录结构 基本介绍 ​编辑 具体的目录结构 Vim编辑器 vi和vim的基本介绍 vi和vim常用的三种模式 正常模式 插入模式 命令行模式 各种模式的相互切换 vim快捷键盘图 粘贴与删除 拷贝当前行并粘贴 拷贝多行并粘贴 删除当前行 删除多行 Vim的退出保存…

ARM的寄存器组织

cpu读写内存 读:(地址)内存的值拷贝到寄存器 写:将寄存器的值拷贝到内存 R0-R12:通用寄存器 sp:栈区的栈顶的地址 lr:保存返回地址 比如函数调用处的下一条指令的地址 pc:程序计数器…

【机器学习】梯度提升和随机森林的概念、两者在python中的实例以及梯度提升和随机森林的区别

引言 梯度提升(Gradient Boosting)是一种强大的机器学习技术,它通过迭代地训练决策树来最小化损失函数,以提高模型的预测性能 随机森林(Random Forest)是一种基于树的集成学习算法,它通过组合多…

网关桥梁:modbus 转 profinet 网关中频加热机的智能融合之旅

一、项目序章:金属热处理的智慧曙光在金属锻造的辉煌舞台上,中频感应加热电源以其高效节能、精准控温的卓越才艺,成为了热处理、焊接与成型艺术中不可或缺的幕后英雄。然而,随着工业自动化的浪潮汹涌而至,如何让这位英…

ig运营事半功倍千万做到这“四不要”

在运营品牌Ins的时候,想要把账号做活跃,就不能做单一的内容,一定要多元化分配内容,下面这4个不要做,一定请记住! 1. 不要只是介绍您的产品。否则,你的内容就会变得单调、乏味。观众喜欢阅读故事…

Java中的TCP/IP与UDP协议Socket入门

Socket: 简单地说Socket就相当于是一家快递公司包括: 寄件人: 1.包裹放快递盒里(数据打包:DatagramSocket) 2.运输快递(发送数据) 3.付钱回家(释放资源)…

1.初识ChatGPT:AI聊天机器人的革命(1/10)

引言 在当今的数字化世界中,人工智能(AI)正以其独特的方式重塑我们的生活和工作。其中,AI聊天机器人作为人机交互的前沿技术,已经成为企业与客户沟通、提供个性化服务的重要工具。这些机器人通过模拟人类的对话方式&a…

Android 存储之 SharedPreferences 框架体系编码模板

一、SharedPreferences 框架体系 1、SharedPreferences 基本介绍 SharedPreferences 是 Android 的一个轻量级存储工具,它采用 key - value 的键值对方式进行存储 它允许保存和读取应用中的基本数据类型,例如,String、int、float、boolean …

RKNPU2项目实战【1】 ---- YOLOv5实时目标分类

目录 目标 一、python接口下实现yolov5模型在开发板上的部署 1.1 在rknntoolkit2环境下模拟实现yolov5模型在RK3588开发板上的推理测试 1.2 在rknntoolkit2环境下实现模型在RK3588开发板上的连板推理测试(模型运行在NPU上) 1.3 在rknntoolkitlite2环…

使用llamaindexLLM大模型构建一个可离线可在线可异步扩展信息的RAG智能问答系统

之前对一件事很好奇,为什么去年训练的大模型可以回答今天的新闻内容。答案是使用了知识扩展系统。基本原理是把参考答案和问题一同提给大模型,给他充分的参考信息做回复编辑。 本文教你完成离线版本的智能问答系统搭建。 最近在疯狂找下家,本人精通图形渲染和ai,求捞啊! …

没参加会议,还要 30000 字的会议材料写总结?用好 AI工具,30 分钟堵住领导的嘴

前段时间本来要参加总公司的重要会议,但由于临时出差错过了。 分公司老总,给了我 10 份会议材料内容,让我学习,并在节后梳理出要点。 结果,一过节就全都给忘记了,咋办?听说最近Kimi出了新玩法…

k8s 部署 jenkins【详细步骤】

文章目录 部署介绍部署步骤第 1 步:创建 namespace第 2 步:创建 ServiceAccount第 3 步:创建持久卷第 4 步:创建 Deployment第 5 步:创建 Service第 6 步:浏览器访问 Jenkins第 7 步:修改默认时区参考⭐ 本文目标:在 k8s 集群中部署一个 jenkins。 部署介绍 🚀 在 K…

内推|京东|后端开发|运维|算法...|北京 更多岗位扫内推码了解,直接投递,跟踪进度

热招岗位 更多岗位欢迎扫描末尾二维码,小程序直接提交简历等面试。实时帮你查询面试进程。 安全运营中心研发工程师 岗位要求 1、本科及以上学历,3年以上的安全相关工作经验; 2、熟悉c/c、go编程语言之一、熟悉linux网络编程和系统编程 3、…