繁体   English   中英

bash或powershell中的>>模式是什么?

[英]What is the >> mode in bash or powershell?

如果在bash或powershell中的命令中输入了一个` ,它将进入提示符下显示>>的模式。 此模式是什么?它的作用是什么?

我键入cd `而不是cd ~并进入模式。 似乎影响它的唯一输入是ctrl + c来终止命令。 关于搜索bash手册页或参考手册,我什么也找不到。

在bash / sh中, `字符启动Command Substitution

当您没有完成命令(带有另一个`字符)时,shell会意识到您的命令未完成,并尝试提示您更多命令(使用$PS2的值)。

完成命令,然后按Enter键,整个过程就会运行。

未完成的字符串( ` )也是如此。

在powershell中,我相信`是行的延续。 (类似于shell脚本等中的\\ 。)

根据要求,我将评论移至答案,以解决问题的PowerShell方面。

在PowerShell中,反引号`是转义字符。 就OP的问题而言,并引起>>提示,反引号`逃避了新行,并强制命令解释器将当前命令继续到下一行。 因此,当行中的最后一个字符是`时,它的作用就像Etan建议的那样作为行继续符。 当他在反引号之后立即按Enter时,它给出>>期望他完成他正在处理的当前命令。

如果不是最后一个字符,则它会转义其后面的所有字符,从而使人们能够转义引号内的引号,或在双引号内声明状态变量名称而无需字符串内插。

如其他答案所述, >>提示符是主机等待您完成某些操作的主机。 它可以是命令,字符串,脚本块或循环等。

(感谢Etan间接向我展示`事情是如何完成的,在这里回答问题真是太棒了)

编辑:B ,基思·希尔(Keith Hill)走进来,帮助我将脚伸进嘴里。 我坚持我的回答,因为我认为它在功能上是正确的(如果在技术上不够彻底),但是显然,它在文档中被称为line continuation

反引号( ` )开始引用上下文,并将继续阅读直到以另一个匹配的`结尾。 当当前行的引号未完成时(例如,按Enter键时),将进入/继续此模式。

'"引用上下文不同,它还希望内部( '" )引号在终止“ >>”上下文之前正确终止。 (实际上,进入此模式并不重要,只是shell表示在交互运行时表达式未正确终止。)

考虑以下终止输入(它运行时不同步,捕获输出,然后显示回显):

echo "Hello " `
uname -m` ", you are awesome!"

这个非终止的(因为内部的"未关闭”)输入:

echo `
echo "Hello world
`

并使用标准(非替代引号):

echo "Hello
word `"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM