shell如何处理命令行的内容以便执行?

shell如何处理命令行的内容以便执行?

shell如何处理命令行的内容以便执行?

  1. 首先是命令,然后是选项和参数。
  2. 将命令行分成段。
  3. 从开始到结束的过程。

答案1

bash“shell”是、ksh、以及所有的通用词zsh

对于所有这些 shell,都有一个手册页(例如man bash),其中详细说明了命令在执行之前如何扩展(变量$foo被内容替换,fu*被替换fun funny(提供这些文件 exixts)等)。

您可以使用调试简单的命令

echo my-command ${foo} fu*

|可以通过在命令前设置 set -x 来调试更复杂的命令(例如具有管道 ( ))。

set -x
my-command ${foo} fu* | while read x 
do

done
set +x

然而,这看起来像一个XY-问题

答案2

命令行上的第一个字段是要执行的命令,由特殊变量 引用$0。无论之后发生什么,都只是可执行文件的简单参数,称为$1, $2, ... $n$0处理这些是 的责任,而不是 shell 的责任

答案3

解析(如其名称)命令行的过程是一个相当长且复杂的过程,需要一本书的一个子章节来使其合理,如下所示此处描述了 ksh(例如)。

一般来说,用非常简单的术语(无法公正地描述许多所需的细节),每个标记(主要受空格限制的单词)在被识别为参数后,按照从左到右的顺序进行处理,然后给出作为扩展参数的命令(重定向是特殊的)。

请阅读本书以获得更好的描述,理解上面的内容非常简单。

相关内容