You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

两个语法"$!"和"$?"的区别是什么?

在Shell脚本中,"$!"和"$?"是两个特殊的变量,用于处理命令的返回状态。

  1. "$!"是一个特殊变量,它保存了上一个后台运行的命令的进程ID(PID)。当一个命令在后台运行时,我们可以使用"$!"来获取该命令的进程ID,并进一步操作该进程。

下面是一个示例,展示了如何使用"$!"来等待一个后台进程完成:

#!/bin/bash

# 后台运行一个命令
sleep 10 &
bg_pid=$!

# 等待后台进程完成
wait $bg_pid

echo "后台进程已完成"

在上面的示例中,我们使用sleep 10 &命令将sleep命令放入后台运行,并使用$!将其进程ID保存到bg_pid变量中。然后,我们使用wait $bg_pid命令等待该后台进程完成。一旦后台进程完成,脚本会输出"后台进程已完成"。

  1. "$?"是一个特殊变量,它保存了上一个命令的退出状态。在Shell脚本中,每个命令执行后都会返回一个退出状态码,表示命令的执行结果。通常,0表示成功,非零值表示失败或错误。

下面是一个示例,展示了如何使用"$?"来检查上一个命令的退出状态:

#!/bin/bash

# 执行一个命令
ls -l

# 检查上一个命令的退出状态
if [ $? -eq 0 ]; then
    echo "命令执行成功"
else
    echo "命令执行失败"
fi

在上面的示例中,我们使用ls -l命令来列出当前目录的文件和目录。然后,我们使用$?检查上一个命令的退出状态。如果退出状态为0,则表示命令执行成功,脚本会输出"命令执行成功";否则,脚本会输出"命令执行失败"。

总结:

  • "$!"用于获取后台运行命令的进程ID。
  • "$?"用于获取上一个命令的退出状态。
本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。
展开更多
面向开发者的云福利中心,ECS 60元/年,域名1元起,助力开发者快速在云上构建可靠应用

社区干货

基于 Apache Calcite 的多引擎指标管理最佳实践|CommunityOverCode Asia 2023

你有纠结过 map 字段中有哪些 key 以及它的含义是什么吗?接下来要介绍的虚拟列语法可以让你不再纠结。第三个问题,你是如何复用相同的 case when 语句的,是手动复制吗?接下来要介绍的 SQL Define function 语法可... 曝光数这两个指标定义为 int,这就会导致使用 Presto 计算时查出 int 结果,而使用 Hive 则会查出一个 double 结果。![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/368a2d384...

一个 41 岁老程序员的 2023 年总结 - 利用 AI 延长自己的编程寿命 |社区征文

我的记忆力尤其是王二小过年——一年不如一样了。正则表达式的语法,我总是今天用了明天就忘,每次要用都得去网上查。有了 ChatGPT 之后,正则表达式的编写和理解,我都交给 ChatGPT 了。下列这两段正则表达式是我... 我最感兴趣的是 Angular 和 React 二者最大的区别是什么?从 ChatGPT 那里我得到了一些解答。虽然我明白 ChatGPT 的回答只能作为参考,但至少它能够给我很多启发和灵感,作为我进一步到 React 官网开始精读和深入学...

社区征文|ChatGPT教我如何面试

###### Q:Python2和Python3的区别?Python2和Python3是Python计算机编程语言的两个不同版本。它们之间有一些重要的区别。- 语法:Python3在语法上做了一些改进,与Python2不完全兼容。例如,Python3引入了新的除... ###### Q:Python的GIL锁是什么?GIL锁(Global Interpreter Lock)是指在Python解释器中存在的一种机制,它限制了同一时刻只有一个线程能够执行Python字节码。因此,即使是多核处理器,Python程序在执行时也只能使用一...

前端 code lint 和代码风格指南

什么?实际上,最终目标是希望代码更加健壮,并且不论团队有多少成员,代码就像同一个人写出来的一样,可读性更强。可以将众多 linters 的检查目标大致分为三类:- programmer errors :主要是对语法的检查,这类错误... 比前面两个慢## TypeScript### [TSLint](https://palantir.github.io/tslint/) / [typescript-eslint](https://typescript-eslint.io/)用来检查 TypeScript 的,但是 2019 年已经废弃了,现在使用的是 ESL...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

两个语法"$!"和"$?"的区别是什么?-优选内容

基于 Apache Calcite 的多引擎指标管理最佳实践|CommunityOverCode Asia 2023
你有纠结过 map 字段中有哪些 key 以及它的含义是什么吗?接下来要介绍的虚拟列语法可以让你不再纠结。第三个问题,你是如何复用相同的 case when 语句的,是手动复制吗?接下来要介绍的 SQL Define function 语法可... 曝光数这两个指标定义为 int,这就会导致使用 Presto 计算时查出 int 结果,而使用 Hive 则会查出一个 double 结果。![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/368a2d384...
一个 41 岁老程序员的 2023 年总结 - 利用 AI 延长自己的编程寿命 |社区征文
我的记忆力尤其是王二小过年——一年不如一样了。正则表达式的语法,我总是今天用了明天就忘,每次要用都得去网上查。有了 ChatGPT 之后,正则表达式的编写和理解,我都交给 ChatGPT 了。下列这两段正则表达式是我... 我最感兴趣的是 Angular 和 React 二者最大的区别是什么?从 ChatGPT 那里我得到了一些解答。虽然我明白 ChatGPT 的回答只能作为参考,但至少它能够给我很多启发和灵感,作为我进一步到 React 官网开始精读和深入学...
社区征文|ChatGPT教我如何面试
###### Q:Python2和Python3的区别?Python2和Python3是Python计算机编程语言的两个不同版本。它们之间有一些重要的区别。- 语法:Python3在语法上做了一些改进,与Python2不完全兼容。例如,Python3引入了新的除... ###### Q:Python的GIL锁是什么?GIL锁(Global Interpreter Lock)是指在Python解释器中存在的一种机制,它限制了同一时刻只有一个线程能够执行Python字节码。因此,即使是多核处理器,Python程序在执行时也只能使用一...
前端 code lint 和代码风格指南
什么?实际上,最终目标是希望代码更加健壮,并且不论团队有多少成员,代码就像同一个人写出来的一样,可读性更强。可以将众多 linters 的检查目标大致分为三类:- programmer errors :主要是对语法的检查,这类错误... 比前面两个慢## TypeScript### [TSLint](https://palantir.github.io/tslint/) / [typescript-eslint](https://typescript-eslint.io/)用来检查 TypeScript 的,但是 2019 年已经废弃了,现在使用的是 ESL...

两个语法"$!"和"$?"的区别是什么?-相关内容

一个大龄程序猿2022年的开发故事|社区征文

>大家好,我是 `那个曾经的少年回来了`。10年前我也曾经年轻过,如今已步入被淘汰的年龄,但现在幡然醒悟,所以活在当下,每天努力一点点,来看看2024年的时候自己会是什么样子吧,2024年的前端又会是什么样子,而2024年的... 直接用vue2的语法来写是没问题的,然后慢慢的也在学习vue3+setup的语法,也将某些组件进行了转换 - 2021年4月开始一个新的pc项目,采用了qiankun微前端,主应用使用vite+vue3,其他子应用采用vuecli+vue3 + elemen...

干货|可视化BI平台:如何构建易用的数据流?

**DataWind** 是一款支持千亿级别数据自助分析的 **一站式数据分析与协作平台。** 在研发过程中,DataWind使用的umi脚手架使得数据流一直绑定在Dva方案上,然而Dva本身语法较为陈旧,DataWind在使用时也比较粗放,导... 所以一开始开放就不应关心数据流是什么,而是约定接口。![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/6066906ea2a34c608667fc5cfc201173~tplv-tlddhu82om-image.image?=&r...

干货 | 基于ClickHouse的复杂查询实现与优化

其基本的查询模式可分为两个阶段。第一阶段,Coordinator在收到查询后,将请求发送给对应的Worker节点。第二阶段,Worker节点完成计算,Coordinator在收到各Worker节点的数据后进行汇聚和处理,并将处理后的结果返回。... 它会在当前的语法树的基础上,根据节点类型和数据分布情况,插入Exchange节点,并生成一个分布式Plan。其次,Coordinator节点会根据ExchangeNode类型切分Plan,并生成每个Stage执行计划片段。**接着,Coordinator节点...

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

大前端工程化的实践与理解 | 社区征文

到底什么是模块化? 简单来说就是,对于 一个复杂的应用程序,与其将所有代码一股脑儿地放在一个文件中,不如按照一定的语法,遵循确定的规则(规范)将其拆分到几个互相独立的文件中 。 这些文件应该具有原子特... 它们的目的是进行作用域隔离,仅在需要的时候被引入,避免掉过去那种通过全局变量或者全局命名空间的方式,以免变量污染和不小心被修改。另一个区别则是内容需要通过返回的方式实现导出。**CMD:**CMD 规范由国内的...

字节开源 Monoio :基于 io-uring 的高性能 Rust Runtime

但是我们并不想在 Rust 里面这么做,这样的话会遇到很多生命周期相关的问题。 Rust 允许自行实现 Runtime 来调度任务和执行 syscall;并提供了 Future 等统一的接口;另外内置了 async-await 语法糖从面向 callbac... 通过这两个例子可以得知 Rust 的异步是怎么用的,以及它写起来确实非常方便。那么它背后到底是什么原理呢?``` #[inline(never)] async fn do_http( ) -> i32 { // do http request in asy...

字节前端分享|酷炫的可视化大屏代码开源了!

我们可以注意到大屏可视化色彩设计有两个明显的特点:1、行业相关联的颜色主题;2、图元渐变着色。 1. 颜色主题注册和切换主题色板的构造基于于语义化及美观设计原则,即结合使用场景(保证大屏主题的场景表... VChart动画的实现依赖于VRender绘图引擎与VGrammar可视化语法。从实现分工而言,VRender提供任意图形的形变能力,VGrammar负责控制形变动画的流程,VChart进行上层封装并将配置以简洁易用的方式暴露给用户。对于上...

Katalyst Custom Config:轻松管理上万节点的差异化配置

即动态配置无需指定 NodeLabelSelector 和 EphemeralSelector,同一个集群只能有一个全局配置* LabelSelector 粒度配置:即动态配置指定了 NodeLabelSelector,其采用 K8s 原生的 labelSeletor 语法,并支持 =, ==, ... 两个不同配置的节点列表集合不能有交集,但 LabelSelector 粒度配置的冲突检测较为复杂。NodeLabelSelector 支持相等运算符(=/==)、非相等运算符(!=)以及集合运算符(in/notin)来匹配 Label,且支持多个匹配算子...

使用 KubeRay 和 Kueue 在 Kubernetes 中托管 Ray 工作负载

**什么是 Ray**Ray 起源于 UC Berkeley 的 RISElab 实验室,其定位是一个通用的分布式编程框架,能帮助用户将自己的程序快速分布式化。Ray Core 提供了 low level 的分布式语法,如 remote func、re... 并且它俩分别对应了离线和在线两个典型场景。除此之外 KubeRay 还提供了 APIServer 等 client 库来负责 CRD 的增删改差,方便对接上层平台。 **RayCluster**![picture.image](https://p6-volc-commu...

火山引擎在机器写作和机器翻译方面的最新进展

什么是可解释?我们看这样一个具体的问题:我们从对话的句子当中希望去学到对话的一个隐表示,并且这个隐表示对应一定的语义关系,例如这里两个对话,”Remind me about the football game”,”Will it be overcast tom... 不同的句子长度和写作风格都有很大的差别,这样就得到了比较多样,并且质量比较高的一些句子。 利用类似的解耦表示学习(Disentangled Representation Learning)的方法,我们也可以去学到句子的语法表示以及语义表示。...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

产品体验

体验中心

云服务器特惠

云服务器
云服务器ECS新人特惠
立即抢购

白皮书

一图详解大模型
浓缩大模型架构,厘清生产和应用链路关系
立即获取

最新活动

爆款1核2G共享型服务器

首年60元,每月仅需5元,限量秒杀
立即抢购

火山引擎增长体验专区

丰富能力激励企业快速增长
查看详情

数据智能VeDI

易用的高性能大数据产品家族
了解详情

一键开启云上增长新空间

立即咨询