Shell特殊位置变量以及常用内置变量总结

news2025/1/30 15:50:21

目录

1. 特殊的状态变量

1.1 $?(上一个命令的退出状态)

1.2 $$(当前进程的 PID)

1.3 $!(后台进程的 PID)

1.4 $_(上一条命令的最后一个参数)

2.常用shell内置变量

2.1 echo(输出信息)

2.2 eval(执行二次解析)

2.3 exec(替换当前进程)

2.4 shift(移动位置参数)

2.5 exit(退出 Shell 进程)

2.6 Read命令


1. 特殊的状态变量

Shell 进程执行命令时,系统会返回一个状态码(也叫退出状态或返回值)来表示命令执行的结果。

1.1 $?(上一个命令的退出状态)

  • $? 用来获取上一个命令的返回值。
  • 返回 0 表示命令执行成功,返回非 0 表示执行失败。
ls /home  # 假设这个命令成功
echo $?   # 输出 0

ls /nonexistent  # 这个目录不存在,命令失败
echo $?   # 输出非 0(通常是 2 或 1)

1.2 $$(当前进程的 PID)

  • $$ 表示当前 Shell 进程的 进程号(PID)
echo $$  # 输出当前 Shell 进程的 PID

1.3 $!(后台进程的 PID)

  • $! 用于获取 返回最近一个后台进程的进程号(PID)(& 结尾的命令)的 PID
  • &sleep 30 命令在后台运行,这样 Shell 会立即返回到命令行,sleep 会在后台运行,而你可以继续执行其他命令,而不需要等待它完成。不会等待 30 秒
sleep 30 &  # 让 sleep 30 秒,并放到后台运行
echo $!     # 输出 sleep 命令的 PID

1.4 $_(上一条命令的最后一个参数)

  • $_ 代表上一个命令的最后一个参数。
  • 也可以在命令行输入时快速使用它,提高效率。
echo Hello World
echo $_  # 输出 "World"

2.常用shell内置变量

Shell 提供了一些常用的内置命令,比如 echoevalexecshiftexit 等。

2.1 echo(输出信息)

echo 用于打印字符串或变量。

选项:

  • -n:不换行
  • -e:解析转义字符(如 \n 换行,\t 制表符)
echo -n "Hello, "  
echo "World!"  

echo -e "Line1\nLine2\nLine3"

2.2 eval(执行二次解析)

  • eval 先解析参数,再执行。
  • 适用于 动态构造的命令
cmd1="ls"
cmd2="-l"
full_cmd="$cmd1 $cmd2"

echo "$full_cmd"  # 只是输出 ls -l
eval "$full_cmd"  # 先解析 full_cmd 变量,再执行 ls -l

2.3 exec(替换当前进程)

  • exec 不会创建新进程,执行完退出该进程
exec ls -l  # 进程被替换,执行完 ls 后 shell 进程结束
echo "This will not be executed"

2.4 shift(移动位置参数)

  • shift 用于 移动脚本参数($1、$2...)。
  • 默认 shift 1,相当于丢弃 $1,后面的参数前移
#!/bin/bash
echo "First: $1"
shift  # 移动参数
echo "Now First: $1"

bash script.sh A B C
# 输出:
# First: A
# Now First: B

2.5 exit(退出 Shell 进程)

  • exit [状态码] 退出当前 Shell 进程,并返回指定的状态码(默认 0)。
exit 6  # 退出 shell,并返回状态 6
bash myscript.sh
echo $?  # 输出 myscript.sh 退出时的返回值

2.6 Read命令

read 是一个非常常用的 Shell 内置命令,用来 从标准输入(通常是键盘)读取一行数据,并将其存储到指定的变量中。它的用法非常灵活,可以用于交互式输入、文件读取等场景,下面是基本用法

read name age
echo "Name: $name, Age: $age"

Red有很多用法,后续有时间会陆续补充完善

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

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

相关文章

实验一---典型环节及其阶跃响应---自动控制原理实验课

一 实验目的 1.掌握典型环节阶跃响应分析的基本原理和一般方法。 2. 掌握MATLAB编程分析阶跃响应方法。 二 实验仪器 1. 计算机 2. MATLAB软件 三 实验内容及步骤 利用MATLAB中Simulink模块构建下述典型一阶系统的模拟电路并测量其在阶跃响应。 1.比例环节的模拟电路 提…

【BQ3568HM开发板】如何在OpenHarmony上通过校园网的上网认证

引言 前面已经对BQ3568HM开发板进行了初步测试,后面我要实现MQTT的工作,但是遇到一个问题,就是开发板无法通过校园网的认证操作。未认证的话会,学校使用的深澜软件系统会屏蔽所有除了认证用的流量。好在我们学校使用的认证系统和…

PythonFlask框架

文章目录 处理 Get 请求处理 POST 请求应用 app.route(/tpost, methods[POST]) def testp():json_data request.get_json()if json_data:username json_data.get(username)age json_data.get(age)return jsonify({username: username测试,age: age})从 flask 中导入了 Flask…

【电工基础】1.电能来源,触电伤害,触电预防,触电急救

一。电能来源 1.电能来源 发电-》输电-》变电-》配电 2.分配电 一类负荷 如果供电中断会造成生命危险,造成国民经济的重大损失,损坏生产的重要设备以致使生产长期不能恢复或产生大量废品,破坏复杂的工艺过程,以及破坏大…

大数据学习之Kafka消息队列、Spark分布式计算框架一

Kafka消息队列 章节一.kafka入门 4.kafka入门_消息队列两种模式 5.kafka入门_架构相关名词 Kafka 入门 _ 架构相关名词 事件 记录了世界或您的业务中 “ 发生了某事 ” 的事实。在文档中 也称为记录或消息。当您向 Kafka 读取或写入数据时,您以事件的 形式执行…

SQL Server查询计划操作符(7.3)——查询计划相关操作符(5)

7.3. 查询计划相关操作符 38)Flow Distinct:该操作符扫描其输入并对其去重。该操作符从其输入得到每行数据时即将其返回(除非其为重复数据行,此时,该数据行会被抛弃),而Distinct操作符在产生任何输出前将消费所有输入。该操作符为逻辑操作符。该操作符具体如图7.2-38中…

单片机基础模块学习——NE555芯片

一、NE555电路图 NE555也称555定时器,本文主要利用NE555产生方波发生电路。整个电路相当于频率可调的方波发生器。 通过调整电位器的阻值,方波的频率也随之改变。 RB3在开发板的位置如下图 测量方波信号的引脚为SIGHAL,由上面的电路图可知,NE555已经构成完整的方波发生电…

ts 进阶

吴悠讲编程 : 20分钟TypeScript进阶!无废话快速提升水平 前端速看 https://www.bilibili.com/video/BV1q64y1j7aH

【C++】STL介绍 + string类使用介绍 + 模拟实现string类

目录 前言 一、STL简介 二、string类 1.为什么学习string类 2.标准库中的string类 3.auto和范围for 4.迭代器 5.string类的常用接口说明 三、模拟实现 string类 前言 本文带大家入坑STL,学习第一个容器string。 一、STL简介 在学习C数据结构和算法前,我…

【Redis】List 类型的介绍和常用命令

1. 介绍 Redis 中的 list 相当于顺序表,并且内部更接近于“双端队列”,所以也支持头插和尾插的操作,可以当做队列或者栈来使用,同时也存在下标的概念,不过和 Java 中的下标不同,Redis 支持负数下标&#x…

【愚公系列】《循序渐进Vue.js 3.x前端开发实践》033-响应式编程的原理及在Vue中的应用

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主&…

PETSc源码分析: Optimization Solvers

本文结合PETSc源代码,分析PETSc中的优化求解器。 注1:限于研究水平,分析难免不当,欢迎批评指正。 注2:文章内容会不定期更新。 参考文献 Balay S. PETSc/TAO Users Manual, Revision 3.22. Argonne National Labora…

面向对象设计(大三上)--往年试卷题+答案

目录 1. UML以及相关概念 1.1 动态图&静态图 1.2 交互图 1.3 序列图 1.4 类图以及关联关系 1.4.1类图 1.4.2 关系类型 (1) 用例图中的包含、扩展关系(include & extend) (2) 类图中的聚合、组合关系(aggragation & composition) 1.5 图对象以及职责划…

芯片AI深度实战:进阶篇之vim内verilog实时自定义检视

本文基于Editor Integration | ast-grep,以及coc.nvim,并基于以下verilog parser(my-language.so,文末下载链接), 可以在vim中实时显示自定义的verilog 匹配。效果图如下: 需要的配置如下: 系列文章: 芯片…

几种K8s运维管理平台对比说明

目录 深入体验**结论**对比分析表格**1. 功能对比****2. 用户界面****3. 多租户支持****4. DevOps支持** 细对比分析1. **Kuboard**2. **xkube**3. **KubeSphere**4. **Dashboard****对比总结** 深入体验 KuboardxkubeKubeSphereDashboard 结论 如果您需要一个功能全面且适合…

TikTok 推出了一款 IDE,用于快速构建 AI 应用

字节跳动(TikTok 的母公司)刚刚推出了一款名为 Trae 的新集成开发环境(IDE)。 Trae 基于 Visual Studio Code(VS Code)构建,继承了这个熟悉的平台,并加入了 AI 工具,帮助开发者更快、更轻松地构建应用——有时甚至无需编写任何代码。 如果你之前使用过 Cursor AI,T…

【MySQL — 数据库增删改查操作】深入解析MySQL的 Retrieve 检索操作

Retrieve 检索 示例 1. 构造数据 创建表结构 create table exam1(id bigint, name varchar(20) comment同学姓名, Chinesedecimal(3,1) comment 语文成绩, Math decimal(3,1) comment 数学成绩, English decimal(3,1) comment 英语成绩 ); 插入测试数据 insert into ex…

强大到工业层面的软件

电脑数据删不干净,简直是一种让人抓狂的折磨!明明已经把文件扔进了回收站,清空了,可那些残留的数据就像牛皮癣一样,怎么也除不掉。这种烦恼简直无处不在,让人从头到脚都感到无比烦躁。 首先,心…

全面解析文件包含漏洞:原理、危害与防护

目录 前言 漏洞介绍 漏洞原理 产生条件 攻击方式 造成的影响 经典漏洞介绍 防御措施 结语 前言 在当今复杂的网络安全环境中,文件包含漏洞就像潜藏在暗处的危险陷阱,随时可能对防护薄弱的 Web 应用发起致命攻击。随着互联网的迅猛发展&#xff…

基于Django的Boss直聘IT岗位可视化分析系统的设计与实现

【Django】基于Django的Boss直聘IT岗位可视化分析系统的设计与实现(完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 该系统采用Python作为主要开发语言,利用Django这一高效、安全的W…