shell脚本变量-特殊变量

news/2024/7/9 3:47:06

目录

  • 特殊变量:`$n`
    • 案例需求
  • 特殊变量:`$#`
    • 案例需求
  • 特殊变量:`$*`、`$@`
    • 案例需求
  • 特殊变量:$?
  • 特殊变量:$$

特殊变量:$n

语法

$n

含义:

用于接收脚本文件执行时传入的参数
$0 用于获取当前脚本文件名称的
$1~$9, 代表获取第一输入参数到第9个输入参数
第10个以上的输入参数获取参数的格式: ${数字}, 否则无法获取

执行脚本文件传入参数语法

sh 脚本文件 输入参数1 输入参数2 …

下面我们来具体实现一个案例来加深印象

案例需求

创建脚本文件demo4.sh文件, 并在脚本文件内部执行打印脚本文件名字, 第一个输入参数, 第二个输入参数
实现步骤

  1. 创建脚本文件demo4.sh
  2. 编辑demo4.sh的文件内容
    命令1: 打印当前脚本文件名字
    命令2: 打印第1个输入参数
    命令3: 打印第2个输入参数
    命令4: 打印第10个输入参数
  3. 执行脚本文件demo4.sh

在这里插入图片描述
在这里插入图片描述

特殊变量:$#

语法

$#

含义
获取所有输入参数的个数

案例需求

在demo4.sh中输出输入参数个数
在这里插入图片描述
在这里插入图片描述

特殊变量:$*$@

语法

$*
$@
# 含义都是获取所有输入参数, 用于以后输出所有参数

$*$@区别

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

现在再来学习一个循环语法便于后面做案例

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

案例需求

在demo4.sh中循环打印输出所有输入参数, 体验$*$@的区别

实现步骤:
编辑demo4.sh脚本文件

增加命令: 实现直接输出所有输入后参数
增加命令: 使用循环打印输出所有输入参数
直接输出所有输入参数, 与循环方式输出所有输入参数(使用双引号包含 $*$@ )
在这里插入图片描述

运行观察区别
在这里插入图片描述

特殊变量:$?

语法

$?

含义

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

每个Shell命令的执行都有一个返回值, 这个返回值用于说明命令执行是否成功
一般来说, 返回0代表命令执行成功, 非0代表执行失败

演示(失败):
在这里插入图片描述
演示(成功)
在这里插入图片描述

特殊变量:$$

语法

$$

含义

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

演示
查看当前Shell环境进程编号

ps -aux|grep bash

在这里插入图片描述


http://lihuaxi.xjx100.cn/news/1247039.html

相关文章

2023年CPSM-3中级项目管理专业人员认证招生简章

CPSM-3中级项目管理专业人员认证,是中国标准化协会(全国项目管理标准化技术委员会秘书处)联合中国国际人才交流基金会,面向社会开展项目管理专业人员能力的等级证书。旨在构建多层次从业人员培养培训体系,建立健全人才…

Unity3D:场景视图视图选项

推荐:将 NSDT场景编辑器 加入你的3D工具链 3D工具集: NSDT简石数字孪生 “场景视图视图选项”工具栏 您可以使用“场景视图视图选项”工具栏“叠加”来选择用于查看场景以及启用/禁用照明和音频的各种选项。这些控件仅在开发期间影响场景视图&#xff0…

无人机上仅使用CPU实时运行Yolov5(OpenVINO实现)(下篇)

​上期中我们讲了Yolov5的前两节环境配置及简单运行,在本期中我们带来后面两节在不同处理器下的实验数据及如何训练自己的模型。​ 三、在不同处理器上的延迟与效果 为了查看Yolov5在不同设备上的延迟与效果,下面我们对Inter的i3、i5、i7三种处理器在同…

【aspose-words】Aspose.Words for Java模板语法详细剖析

文章目录 前言🍊缘由aspose-words模板语法再了解 🎯主要目标实现3大重点 🎁快速链接🍈猜你想问如何与狗哥联系进行探讨1.关注公众号【JavaDog程序狗】2.踩踩狗哥博客 🍯猜你喜欢文章推荐 正文🍋aspose-word…

2023-6-15-第六式适配器模式

🍿*★,*:.☆( ̄▽ ̄)/$:*.★* 🍿 💥💥💥欢迎来到🤞汤姆🤞的csdn博文💥💥💥 💟💟喜欢的朋友可以关注一下&#xf…

如何撰写高效且实用的Prompt

很多人说GPT并没有什么让人惊艳的地方,但实际上,他们并没有发挥好它的潜能。在很多情况下,他们往往没有使用恰当的prompt。一个恰到好处的prompt就如同魔法师在施展魔法时所需要吟唱的咒语,只有那些正确无误的咒语,才能…

如何在springcloud分布式系统中实现分布式锁

一、简介 一般来说,对数据进行加锁时,程序先通过acquire获取锁来对数据进行排他访问,然后对数据进行一些列的操作,最后需要释放锁。Redis 本身用 watch命令进行了加锁,这个锁是乐观锁。使用 watch命令对于频繁访问的键…

Dokcer安装---Mqtt

1、拉取镜像 docker pull registry.cn-hangzhou.aliyuncs.com/synbop/emqttd:2.3.6 老版本 2、运行 docker run -it --name emq -p 18083:18083 -p 1883:1883 -p 8084:8084 -p 8883:8883 -p 8083:8083 -d registry.cn-hangzhou.aliyuncs.com/synbop/emqttd:2.3.6 –name 容器…