我正在尝试执行以下行:
exit | sqlplus username/password@sid @test.sql
在 cmd 中运行良好,但在 powershell 中我得到“不允许使用空管道元素”
为什么会这样,我该如何解决?
最佳答案
好吧,exit
命令没有输出,所以没有任何东西可以传递给管道,因此您得到一个空的管道元素。因此,虽然没有任何内容可以通过管道传输到其他命令,但问题是它是否真的应该执行。
此外,cmd 中的 shell 内置命令,例如 exit、dir 等,在 Powershell 中的工作方式可能有所不同。别名只是为了帮助习惯。
解决这个问题可能很容易。因为没有什么可以传递给管道,所以您的陈述没有任何实际意义。你可能想跑
sqlplus username/password@sid @test.sql
exit
预计到达时间:正如您的评论表明的是一个完全不同的问题。您从 this answer 复制了命令行错误的。如果您想在管道中稍后向命令发送文本“exit”,则需要以某种方式输出它。这可以在 cmd 和 Powershell 中使用 echo
完成。所以你不应该在这里遗漏 echo
:
echo
退出 | sqlplus 用户名/密码@sid @test.sql
或者,您可以将“exit”作为字符串直接发送到管道中:
"exit" | sqlplus username/password@sid @test.sql
关于windows - 为什么使用管道在 powershell 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1059622/