为什么 plink 有括号问题?

Why does plink have an issue with brackets?

我正在尝试使用 plink 到 运行 远程服务上的 pl/sql 包 运行 连接 ksh shell。我可以连接,一切都很好,但我无法在没有 ksh 抛出错误的情况下将 ( 括号传递给 plink。

当我在 dos 命令提示符下输入时:

plink myuser@server -pw password echo "This is a test"

一切正常。但是当我输入

plink myuser@server -pw password echo "This is a test ( )"

我得到:-

 ksh: 0403-057 Syntax error at line 1 : `(' is not expected.

我在调用包时遇到同样的问题。如果包有一个 ( 那么它在通过 plink 调用时会失败,但是 运行 在直接输入到 putty window 中时没问题 window。

有谁知道为什么 plink/ksh 有括号问题?

解决方案是用“\”转义括号,即

plink myuser@server -pw password echo "This is a test \( \)" 

http://www.ibm.com/support/knowledgecenter/ssw_aix_72/com.ibm.aix.osdevice/korn_shell_quote_chars.htm