如何将括号发送到括号括起来的管道中?

时间:2017-07-14 19:34:24

标签: windows batch-file cmd pipe sqlplus

在Windows .bat文件中,我可以像这样使用重定向:

(echo connect / as sysdba
echo select sysdate from dual;
echo exit
) | sqlplus -s /nolog

它会运行(显然这个例子什么都不做)。如何为这样的查询传递括号:

(echo connect / as sysdba
echo select trunc(sysdate) from dual;
echo exit
) | sqlplus -s /nolog

没有炸毁管道?

1 个答案:

答案 0 :(得分:3)

在关闭括号之前,您需要添加三个插入符号。

(
echo connect / as sysdba
echo select trunc(sysdate^^^) from dual;
echo exit
) | more

为什么?
在第一种情况下,您需要一个插入符来转义括号以避免该块被关闭。

( echo test (test^) )

但是当您使用管道时,完整的构造被打包并转移到新的命令exe 在那里你需要第二次插入一个插入符号,但是为了转换这个插入符号,你需要在原始回声中添加两个插入符号。
因此,您总共需要三个。