当前位置: 首页 > news >正文

146、【OS】【Nuttx】【周边】效果呈现方案解析:特殊变量$

【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除

背景

上篇 blog
【OS】【Nuttx】【周边】效果呈现方案解析:VSCode Remote Server
分析了 egrep 命令找到了 URL 链接内容 http:,然后开始通过 broswer.sh 处理打开网页的请求,并简单分析了下 VSCode 在 ~/.vscode-server/ 路径下自动部署的内容,下面继续来看下

特殊变量$

上篇 blog 【OS】【Nuttx】【周边】效果呈现方案解析:VSCode Remote Server 最后介绍了虽然都输入的是 echo $PATH 命令,但是由于它们运行在不同的会话,所以 PATH 已经被隔离开,下面就这个点再展开下

之前 blog 【OS】【Nuttx】【周边】效果呈现方案解析:测试命令 介绍了一下 Linux 中的一些特殊变量,比如 $? 表示记录下最后一个命令的退出状态
在这里插入图片描述
这里的 $$ 也是个变量,返回 Shell 进程 ID(Process ID),Shell 一旦启动,其 $$ PID 就固定了,永远不变

另外,要注意下这里的描述,$$ 永远返回的是 父Shell 的 PID,不会随着 子Shell 改变

子Shell 指的是当前 Shell 环境(也就是 父Shell)派生的一个独立副本,子Shell 继承 父Shell 的环境变量,函数等,但有自己的进程 ID(PID),在 子Shell 中做的大多数更改(比如变量赋值,目录切换等)不会影响 父Shell,这里注意,$$ 指向的 父Shell PID 不会变,可以用 $BASHPID 查看 子Shell 的 PID

举个例子,在 父Shell 中输入

$$

在这里插入图片描述
显示当前 Shell 的 PID 为 34410

接着在 父Shell 输入

echo $BASHPID

在这里插入图片描述
可以看到 $$$BASHPID 的结果都是一样的,指向当前 父Shell 的 PID

接着在终端输入

(echo $$)

在这里插入图片描述
可以看到 子Shell 中,$$ 指向的也是 父Shell 的 PID

在终端输入

(echo $BASHPID)

在这里插入图片描述
输入 $BASHPID 后,可以看到 子Shell 的 PID 为 661896,和 父Shell 不一样

这里涉及到 Shell 中的 ( ) 特性,终端输入

man bash

可以看到 (list) 特性描述如下,这里 list 表示 command 命令集合
在这里插入图片描述

  • 当把一组命令写在圆括号里,比如 (command1; command2),这组命令会在 子Shell 中执行,子Shell 执行完命令后会自动退出,回到原来的 Shell,也就是 父Shell
  • 子Shell 中做的任何环境修改,在 子Shell 执行结束后都不会保留到 父Shell 中,比如变量赋值 (test_name="Tom"; echo $test_name),这个 name 变量只在括号内有效,外面无法访问
    在这里插入图片描述
    还有一些影响环境的内建命令,比如 cdexportunset 等,在 子Shell 中执行也不会影响到 父Shell
  • 整个 list 命令集合的退出状态和 list 里面最后一个命令的退出状态有关,如果 list 中最后一个命令成功(退出码为 0),那整个 list 也返回 0;同样,如果最后一个命令失败(比如退出码为 1),那 list 也返回 1

ok,先到这里,下篇 blog 继续

http://www.dtcms.com/a/465900.html

相关文章:

  • 实现流水灯
  • 培 网站建设方案 doc台州seo网站推广
  • vue前端面试题——记录一次面试当中遇到的题(3)
  • Vuex的工作流程
  • 学习笔记:Vue Router 动态路由与参数匹配详解
  • seo怎样新建网站wordpress 底部模板
  • 高性能场景推荐使用PostgreSQL
  • 用一颗MCU跑通7B大模型:RISC-V+SRAM极致量化实战
  • 前端开发框架全景解析:从演进到实践与未来趋势
  • 葫芦岛做网站百度经验发布平台
  • 做网站找合作伙伴南昌网站建设精英
  • (二)deepseek控制机械臂-机械臂提示词设置测试
  • Blender概念抽象有机体模型资产生成器预设 Organic Generator V1.0附使用教程
  • Go语言实战:高并发服务器设计与实现
  • 数字化转型:概念性名词浅谈(第七十讲)
  • 云服务器安装最新版本的nodejs
  • 一键提交网站优质作文网站
  • csv excel
  • A* 工程实践全指南:从启发式设计到可视化与性能优化
  • Python+requests+excel 接口自动化测试框架
  • [Dify] 将外部数据库表或 Excel 转为知识库内容的最佳实践
  • SpringBoot实现数据脱敏
  • 基于JavaWeb的智慧养老院管理系统的设计与实现(代码+数据库+LW)
  • 网站建设项目执行情况报告模板北京海淀区
  • Qt:多文档模式开发
  • k8s集群环境下微服务项目性能实战(单接口)
  • 5分钟了解k8s pod通信原理--图文篇
  • 静态网页素材泉州seo优化排名公司
  • 建设银行网站上改手机东莞市常平东部中心医院
  • MySQL索引优化实战从慢查询到高性能的蜕变之路