Shell脚本2

news2024/12/26 22:00:05

自定义局部变量

:定义在一个脚本文件中的变量 只能在这个脚本文件中使用的变量,局部变量

语法: var_name=value

变量定义规则

  1. 变量名称可以有字母,数字和下划线组成, 但是不能以数字开头

  2. 等号两侧不能有空格

  3. 在bash环境中, 变量的默认类型都是字符串类型, 无法直接进行数值运算

  4. 变量的值如果有空格, 必须使用双引号括起来

  5. 不能使用Shell的关键字作为变量名称

如:var1=it

变量查询:

  echo $var_name

  echo ${var_name}        花括号适合拼接字符串1

如:echo $var1

输出        it

        echo "my name is ${var1}123"

输出        my name is it123

变量删除:

unset var_name

自定义常量

:变量设置值以后不可以修改的变量叫常量 ,只读变量

readonly var_name

如:var3=itt

        readonly var3        设置var3为只读变量

        var3=qqq                无法修改只读变量

自定义全局变量

:在当前脚本文件中定义全局变量,

这个全局变量可以在当前shell环境与子shell环境中都可以使用

父子shell环境

:由两个shell脚本文件 A.sh B.sh ,在A.sh脚本文件中执行B.sh脚本文件,

A.sh就是父shell环境,B.sh就是子shell环境

全局变量语法: export var_name1 var_name2

案例:测试全局变量在子shell中是否可用 在父shell中是否可用

需求:        1、创建2个脚本文件 demo2.sh demo3.sh

                        touch demo2.sh demo3.sh

                2、编辑demo2.sh       

                        vim demo2.sh

                        命令1:定义全局变量 var4       

                        var4=itt

                        export var4

                        命令2:执行demo3.sh脚本文件       

                        sh demo3.sh

                3、编辑demo3.sh

                        vim demo3.sh

                        输出全局变量var4

                        echo "在demo3.sh文件中输出var4变量:${var4}"

                4、执行demo2.sh脚本文件

                        sh demo2.sh

结论:全局变量在当前shell环境与子shell环境中可用,父shell环境中不可用

特殊变量        $n

:用于接收脚本文件执行时传入的参数

$0 获取当前脚本文件名

$1-$9 获取第1个到第9个输入参数

${数字} 获取第10个及以上的输入参数

执行脚本文件 传入参数语法         sh 脚本文件 参数1 参数2 ......

案例:创建脚本文件demo4.sh 在脚本文件内部执行打印脚本文件名字、参数

需求:        1、touch demo4.sh

                2、编辑demo4.sh文件内容

                #!/bin/bash

                #命令1 打印当前脚本文件

                echo "当前脚本文件名称:${0}"

                #命令2 打印第1个输入参数

                echo "第1个输入参数:${1}"

                #命令3 打印第2个输入参数

                echo "第2个输入参数:${2}"

                #命令4 打印第10个输入参数

                echo "第10个输入参数不带花括号:$10"        获取结果不一样 相当于 $1 拼接上 0

                echo "第10个输入参数带花括号:${10}"

                3、执行脚本文件demo4.sh

特殊变量 $#        获取所有输入参数的个数

特殊变量 $* $@        获取所有输入参数 用于输出所有参数

1、不用双引号括起来, 功能一样
          $*和$@获取所有输入参数,格式为: $1 $2 ... $n
2、使用双引号括起来
          "$*"获取的所有参数拼接为一个字符串, 格式为: "$1 $2 ... $n"
          "$@"获取一组参数列表对象, 格式为: "$1" "$2" ... "$n"
  使用循环打印所有输入参数可以看出区别

for var in 列表变量
do        # 循环开始
   命令  # 循环体
done    # 循环结束

# 增加命令: 实现直接输出所有输入后参数
echo '使用$*直接输出:'$*
echo '使用$@直接输出:'$@

# 增加命令: 使用循环打印输出所有输入参数
echo '循环遍历输出$*所有参数'
for item in "$*"
do
   echo $item
done
echo '循环遍历输出$@所有参数'
for item in "$@"
do
   echo $item
done

特殊变量 $?

用于获取上一个Shell命令的退出状态码, 或者是函数的返回值

每个Shell命令的执行都有一个返回值, 这个返回值用于说明命令执行是否成功

一般来说, 返回0代表命令执行成功, 非0代表执行失败

特殊变量 $$

用于获取当前Shell环境的进程ID号

查看shell环境的进程号        ps -aux | grep bash

        echo $$        显示当前shell环境的进程编号

 

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

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

相关文章

thinkphp+vue+html基于web的旅游景点酒店线路管理系统6722q

数据库分析 整个系统所包括的信息有景点信息、用户信息、酒店信息、旅行社信息、留言信息等。可将这些信息抽象为下列系统所需要的数据项和数据结构: 1.景点管理(编号,景点名称,景点等级,天气情况,位置,住宿&#xff0…

真无线耳机哪款性价比高?高性价比无线耳机排行榜

近几年,蓝牙耳机凭借使用便捷而受到广大用户的欢迎,逐渐取代有线耳机成为人们生活中必不可少的存在。下面,我来给大家推荐几款性价比高的蓝牙耳机,一起来看看吧。 一、南卡小音舱Lite2蓝牙耳机 参考价:299 蓝牙版本…

初识C++之特殊类设计与类型转换

目录 一、特殊类设计 1. 设计一个对象不能被拷贝的类 2. 设计一个只能在堆上创建对象的类 2.1 禁止构造函数 2.2 禁止析构函数 3. 设计一个只能在栈上创建对象的类 4. 设计一个不能被继承的类 5. 设计一个只能创建出一个对象的类(单例模式) 5.1…

开源世界的尴尬时刻

作者按:开源世界里全都是一片祥和、欣欣向荣吗?全都是热情开放、无私奉献吗?那当然不是。本文罗列几起尴尬世界,目的是让大家对开源世界有一个更全面更具体的认识,让大家对底层开源人的生活的心态有一个更切实际的了解…

ORBBEC(奥比中光)AstraPro相机在ROS2下的标定与D2C(标定与配准)

文章目录 1.rgb、depth相机标定矫正1.1.标定rgb相机1.2.标定depth相机1.3.rgb、depth相机一起标定(效果重复了,但是推荐使用)1.4.取得标定结果1.4.1.得到的标定结果的意义 1.5.IR、RGB相机分别应用标定结果1.5.1.openCV应用标定结果1.5.2.ros…

mac m1安装V2rayU

我原先window上使用的是V2rayN。mac系统使用的是V2rayU。 1.首先下载V2rayU 下载地址:https://github.com/yanue/V2rayU/releases 2.将下载的文件拉到application 安装后,点击运行,此时会弹出安全警告,需要在「系统偏好设置-安…

第4章-动态规划

第4章-动态规划 总分:100分 得分:100.0分 10.0 分 1 . 多选题 中等 10分 有关0-1背包问题,用c[i][j]描述子问题:1...i共i个物品,背包容量为j的最优值(装入背包的最大价值),则其子问题为:1...i-1共i-1个物品,背包容量为j-w ix i,以下说法正确的是( AB…

TypeScript教程(N)

弱类型和强类型 编程语言,按照数据类型是否固定可分为 强类型语言 和 弱类型语言。 弱类型语言 弱类型语言:变量、函数参数和函数的返回值,是没有类型的,一个变量可以接收任何类型的数据,一个函数也可以返回任何类型…

大学生所面临的网络安全问题有哪些?

网络安全从本质上来讲就是网络上的信息安全,就是指网络系统中流动和保存的数据,不受到偶然的或者恶意的破坏、泄露、更改,系统连续正常的工作,网络服务不中断。从广义上来说,凡是涉及网络信息的保密性、完整性、可用性…

登顶Nature 正刊!百度生物计算用AI首次实现mRNA领域重大进展

1985年11月21日的《自然》封面,是一张来自中国的“地图”。这张地图是清代总兵陈伦炯所编撰《海国闻见录》中的插图,是中国人开始认知与探索世界的见证,而选用这张封面,是为了配合当期的特别文章《科技在中国》。 那时候&#xff…

4 ROS2节点参数基础

4 ROS2节点参数基础 4.1 ROS2节点参数介绍4.2 使用C/C实现对节点参数的增删改查4.2.1 创建C/C节点参数的服务端4.2.2 创建C/C节点参数客户端 4.3 使用Python实现对节点参数的增删改查4.3.1 创建Python节点参数的服务端4.3.2 创建Python节点参数客户端 4.4 ROS2节点参数小结 其他…

2008-2020年上市公司能源消耗数据

2008-2020年上市公司能耗数据/上市公司能源消耗数据 1、时间:2008-2020年 2、指标包括:上市公司ID、证券代码、证券简称、资源名称、消耗量、单位 EndDate [统计截止日期] - YYYY-12-31 InstitutionID [上市公司ID] - null Symbol [证券代码] - 交易所…

[架构之路-187]-《软考-系统分析师》-5-数据库系统 - 操作型数据库OLTP与分析型数据库OLAP比较

OLAP与OLTP的区别? OLTP(Online transaction processing) 在线/联机事务处理。典型的OLTP类操作都比较简单,主要是对数据库中的数据进行增删改查,操作主体一般是产品的用户。 OLAP(Online analytical processing): 指联机分析处理。通过分…

Linux网络编程:三次握手 四次挥手

1. 三次握手 建立TCP可靠连接,只能是客户端先发起。 (1)SYN标志位为1,表示请求建立连接;ACK标志位为1,表示确认收到对方报文。 (2)seq为数据包序列号,ack为确认序列号。…

计算机视觉的应用4-目标检测任务:利用Faster R-cnn+Resnet50+FPN模型对目标进行预测

大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用4-目标检测任务,利用Faster RcnnResnet50FPN模型对目标进行预测,目标检测是计算机视觉三大任务中应用较为广泛的,Faster R-CNN 是一个著名的目标检测网络&#x…

or-tools 应用案例分析:复杂作业车间调度问题

作业调度问题是常见的线性规划(整数规划)问题,其中多个作业在多台机器上处理。每个作业由一系列任务组成,这些任务必须按给定的顺序执行,并且每个任务都必须在特定的机器上处理。如何有效的利用所有的机器在最短的时间内完成所有的作业任务&a…

神经形态处理和自搜索存储如何降低联邦机构的网络风险

组织在边缘处理的信息量呈爆炸式增长。对于联邦机构和军队来说尤其如此,它们从设备、建筑物、船舶、飞机等中的移动设备和传感器生成大量数据。 寻找有效的方法来管理、使用和保护这些数据具有挑战性。但是有一个有效且具有成本效益的解决方案。神经形态处理和自搜…

c#笔记-数组

数组 声明数组 数组是一种可以声明多个同类型变量的数据结构,能替你声明多个变量。 并且其中的值可以通过索引动态访问,可以搭配循环批量处理这些值。 数组类型的写法是,在目标类型后加上一对中括号。 数组值没有字面量,需要构…

海天注塑机KEBA系统数据采集

本文章只针对海天注塑机的KEBA系统,因为其他注塑机厂家也用KEBA系统,他们的采集方式可能不太一样,所以后续有时间我将写其他文章来解释(默认你已经向海天采购了OPC组件)。 一、采集原理 采集软件(OPC cli…

electron+vue3全家桶+vite项目搭建【18】electron新建窗口时传递参数【url版】

文章目录 引入实现效果展示实现思路实现步骤1.调整主进程新建窗口的handle2.调整新建窗口函数3.封装url获取请求参数的工具 测试代码 引入 electronvue的项目中,我们通过传入页面路由来展开新的页面,就像vue-router的路由传参一样,我们可以利…