是的$(是的)有什么作用?


23

想知道yes命令的用途是什么,我偶然发现了这个注释,并试图执行

yes $(yes yes)

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

这是怎么回事


2
我不是专家,但是可能是第一次调用试图打印无穷大次数。(否则论点可能太长了。)
苦苦挣扎

5
@strugee永远不会填充参数列表,因为yes永远不会返回。
克里斯·

@strugee您可以使用xargs:(yes yes | xargs -P 0 yes或不-P 0使用单进程无穷大)获得“无穷大次数”
Kyle Strand

Answers:


25

它应该已经足够运行

 echo $(yes yes)

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


6

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

$ sh
$ kill -9 $$
Killed
$

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

1
1600万千兆字节,对吗?戈登·摩尔(Gordon Moore)潜伏在一个拐角处,“好吧...我的意思是,还没有 ...”
FeRD
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.