Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我偶然发现了这篇文章,用户chepner在他的回答中建议使用\j(如bash 手册中所述)来检索后台作业的当前运行计数。基本上它归结为
\j
num_jobs="\j" echo ${num_jobs@P}
谁能告诉我这里到底发生了什么?例如
${\j@P}
@P
像任何参数扩展一样,您必须提供参数的名称,而不是任意字符串。\j不是参数的名称;它是您想从参数扩展中获得的文本。
参数展开后,@P进一步对结果进行提示展开,以\j作业数代替。
$ num_jobs="\j" $ echo "${num_jobs}" \j $ echo "${num_jobs@P}" 0
之前的部分@是您尝试扩展的参数的名称,它不能是您想要以某种方式修改的字符串。并且@P是 Bash 4.4 中引入的参数扩展(参见手册):
@
${parameter@operator} 扩展要么是值的转换,要么是parameter 关于参数本身的信息,具体取决于 的值 operator。每个运算符都是一个字母: P 扩展是一个字符串,它是扩展 的值的结果, parameter就好像它是提示字符串一样(请参阅控制提示)。
${parameter@operator}
扩展要么是值的转换,要么是parameter 关于参数本身的信息,具体取决于 的值 operator。每个运算符都是一个字母:
parameter
operator
P
扩展是一个字符串,它是扩展 的值的结果, parameter就好像它是提示字符串一样(请参阅控制提示)。