yes $(yes yes) 做什么?

yes $(yes yes) 做什么?

我想知道这个yes命令可能有什么用处,我偶然发现这条评论,并尝试执行

yes $(yes yes)

据我了解,这应该简单地打印出无限序列yes,但它什么也不输出,并在几秒钟后使我的图形终端崩溃。 (如果我在 tty1 上执行它,我会在一段时间后看到登录提示。)

这里发生了什么?

答案1

应该已经足够运行了

 echo $(yes yes)

运行$(...)内部命令直到完成并捕获其所有输出。 - 现在,由于yes运行时间较长并生成大量输出,bash 最终会耗尽内存并崩溃。

答案2

要查看关闭 shell 的错误消息,您需要运行一个子 shell。

$ sh
$ kill -9 $$
Killed
$

$ sh
$ yes $(yes yes)
sh: xrealloc: cannot allocate 18446744071562067968 bytes
$

相关内容