检查我对 Bash 中的操作顺序是否正确

检查我对 Bash 中的操作顺序是否正确

古腾标签!我在所有与 Bash 相关的事情上都是菜鸟。我正在熟悉语法,并且想知道该命令中的操作顺序是否如我所想。

命令: echo 2 * 3 > 5 is a valid inequality来自 Cameron Newham 的 Learning The Bash Shell

我相信顺序如下:

  1. echo被解释
  2. 2被读取并缓冲
  3. *被解释,并且搜索被初始化
  4. 当前文件夹中的每个匹配文件都会附加到缓冲区
  5. 3被读取并缓冲
  6. > 5被解释,并5创建一个新文件,并且还重定向输出
  7. is被读取并缓冲
  8. a被读取并缓冲
  9. valid被读取并缓冲
  10. inequality被读取并缓冲
  11. echo将缓冲区中的内容输出到5

提前致谢

答案1

我不会阅读 bash 源代码,但我怀疑它是否如您想象的那样发生,仅仅是因为最复杂的解释器在解释时不会执行某些操作,它们会读取整个语句,找出答案,然后执行。他们不会读取像 5 这样的一个符号,创建一个文件,然后继续读取和“缓冲”。

你(有时)需要知道的是 bash 的处理顺序:大括号扩展;波形符扩展、参数和变量扩展、算术扩展、命令替换;分词;文件名扩展;工艺替代。

哪一种回答了你的问题......由于分词是最后阶段之一,而不是第一阶段,因此它很难在阅读文本的过程中创建文件。

bash 的细节比大多数人想象的要复杂得多……这不是一件好事。这是一个深奥的大杂烩,可能需要完全重新设计才能实现。但是它就是这样啊。

相关内容