在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
没有炸毁管道?
答案 0 :(得分:3)
在关闭括号之前,您需要添加三个插入符号。
(
echo connect / as sysdba
echo select trunc(sysdate^^^) from dual;
echo exit
) | more
为什么?
在第一种情况下,您需要一个插入符来转义括号以避免该块被关闭。
( echo test (test^) )
但是当您使用管道时,完整的构造被打包并转移到新的命令exe
在那里你需要第二次插入一个插入符号,但是为了转换这个插入符号,你需要在原始回声中添加两个插入符号。
因此,您总共需要三个。