【问题标题】:Why does bash go into an infinite loop?为什么 bash 会进入无限循环?
【发布时间】:2021-01-29 04:50:14
【问题描述】:

我正在尝试在 bash 中模拟布尔变量的不同方法。一种方法是:

readonly T=1
readonly F=0
((T)) && echo "true" || echo "false"
((F)) && echo "true" || echo "false"

分别打印 truefalse。然后我脑抽筋,打字:

! ((F)) && "yes"

希望在终端中看到 yes。但是,如果没有 echo 命令,它会进入打印 y 的无限循环。有人能解释一下 bash 在这里做什么吗?

【问题讨论】:

  • yes 是一个连续打印y 的程序的名称。
  • 他知道应该是什么,他意识到自己忘记了echo

标签: linux bash


【解决方案1】:

bash 没有进入无限循环。您正在运行yes 程序,其描述为:

yes - 重复输出一个字符串直到被杀死

y 是它打印的默认字符串。目的是将它传递给一个会询问大量确认问题的命令,这样您就可以对所有这些问题给出相同的答案。例如

yes | ./configure

【讨论】:

  • 回答确切的问题,关于 bash 正在做什么:bash 正在阻塞,等待 yes 完成。
猜你喜欢
  • 2011-04-19
  • 2011-11-21
  • 1970-01-01
  • 1970-01-01
  • 2020-04-28
  • 1970-01-01
  • 1970-01-01
  • 2010-11-01
相关资源
最近更新 更多