为什么PowerShell脚本在提示输入时暂停?

nx7onnlm  于 2023-02-12  发布在  Shell
关注(0)|答案(1)|浏览(224)

我在PowerShell脚本快捷方式中成功运行了3个命令,但在运行最后一个命令后,它提示用户输入“y”或“N”,而在我的脚本中,我想输入“y”并按Enter键。
在看了其他帖子,如this后,我曾试图回显击键,但它只在最后一个命令Here you can see the 1st Echo Successfully and the 2nd is stuck because it is paused or something之前工作

PowerShell脚本

ECHO 'y'

spicetify config current_theme Sleek
spicetify config color_scheme futura
spicetify apply

ECHO 'y'
xghobddn

xghobddn1#

  • 要向请求交互式输入的外部程序提供自动响应,请将这些响应通过它们的 stdin 流,管道 * 传送给它们。
  • 请注意,从PowerShell 7.3.1开始,* 尾随换行符 *(Windows上为CRLF,Unix上为LF)会自动且固定地附加到您从PowerShell输出的字符串中,因此,在Windows上,发送'y'实际上会发送"yrn",并且该换行符通常被解释为 * 提交 * 输入到交互式提示符。
  • 虽然这样做很方便,但在某些情况下会出现问题-请参见this answer

因此,对于spicetify调用中可能/确实提示y/n响应的 * 每个 * 调用,请执行以下操作,以最后一个命令为例:

'y' | spicetify apply

请注意字符串字面量'y'本身如何足以生成输出-不需要echo,它在PowerShell中是很少需要的Write-Output cmdlet的别名-有关详细信息,请参阅this answer

相关问题