感叹号变量`$!`

Sup*_*007 13 shell environment-variables variable

我一直在为我的 Unix 考试而学习,我经常看到感叹号变量 -$! 如果我echo $!在 Mac shell 上写下诸如“你有邮件……”之类的信息

这样做的目的是存储我是否有任何邮件或还有其他东西吗?

编辑:有趣的巧合发生了。就在我写echo $!我的 Shell 时,也通知我我有一些邮件。所以这就是我写邮件部分的原因。

Mic*_*ael 19

$! 是最近的后台命令的PID。

有关其他特殊参数,请参阅此优秀答案


sch*_*ily 6

在命令完成和/$MAILCHECK或 600 秒过去后,shell 会检查新邮件。

echo $!打印最后一个后台进程的 PID。之后,可能会检查邮件。


Ste*_*itt 5

$!如果有,则由放置在当前 shell 中的后台的最后一个进程的进程标识符替换。该bash手册提供了所有此类特殊参数的详细信息。

要查看此操作:

echo $!
Run Code Online (Sandbox Code Playgroud)

应该打印0(假设没有作业被后台处理)

man bash &
echo $!
Run Code Online (Sandbox Code Playgroud)

应该打印man后台进程的进程标识符。完整的输出应该看起来像

$ man bash &
[1] 4319
[1]  + 4319 suspended (tty output)  man bash
$ echo $!
4319
Run Code Online (Sandbox Code Playgroud)