命令行末尾的单独反引号有什么作用?

命令行末尾的单独反引号有什么作用?

今天我不小心在终端中输入了 cd `,终端做了一些奇怪的事情。

它在下一行添加了一个“>”符号,后面跟着我的光标,就像它需要一些输入一样。无论我输入什么,都会继续做同样的事情,直到我终止命令。

出于好奇,发生了什么?这是一个错误还是一个功能?

答案1

您所看到的效果是由于 shell 期待另一个反引号。例如,当您输入((或任何其他不完整的命令)并按Return命令行时,您会得到相同的效果。

您收到的提示>␣二次提示,如存储在$PS2.当需要更多交互式输入才能最终完成命令时,shell 将使用此提示符。

一个例子:

bash-4.4$ for i in {0..10..2}
> do
> printf 'Hello %d\n' "$i"
> done
Hello 0
Hello 2
Hello 4
Hello 6
Hello 8
Hello 10
bash-4.4$

bash-4.4$是我的主要提示( ),并且在第一行按after$PS1时会收到第二个提示,因为到目前为止输入的命令尚未完成。我继续在每一行上获得辅助提示,直到通过按after完成命令(这完成了 for 循环到 shell 的输入)。Return{0..10..2}Returndone

三级提示( $PS3,通常#?␣) 由关键字使用select,而四元1提示当 shell选项设置为时, ($PS4通常+␣) 用于跟踪输出。xtraceset -x


1 是的,我必须查一下这个词。

答案2

在这里回答了已经... 本质上

您在反引号之间键入的所有内容都会在主命令之前由 shell 计算(执行)

相关内容