【发布时间】:2017-02-27 02:45:42
【问题描述】:
我有一个包装脚本,它通过 ssh 远程连接到另一台服务器并运行另一个 shell 脚本,并将提供的参数作为输入参数
sshwrapper.sh "executequery.ksh SYNC N \\\"\\\" \\\"\\\" \"\\\"dt='2017-02-10'\\\"\""
当我执行上述操作时,executequery.ksh 在远程服务器上接收如下参数(按预期工作)
SYNC "" "" "dt='2017-02-10'"
但是,当我通过 Informatica 运行时,它隐式运行如下。
sh -c "command"
现在,在它替换上面的命令中,它失败了。那是
sh -c "sshwrapper.sh "executequery.ksh SYNC N \\\"\\\" \\\"\\\" \"\\\"dt='2017-02-10'\\\"\"""
请您帮忙转义双引号,但仍应设法将输入参数提供为
SYNC "" "" "dt='2017-02-10'"
【问题讨论】:
-
如果你需要连续三个以上的反斜杠,你可能做错了。我建议你需要编写一个脚本,将脚本复制到远程机器,然后执行脚本。
-
抱歉,我不确定我是否理解您的更正点。当您手动调用时,该命令运行良好,没有问题。只有在通过 Informatica 调用时才会失败,因为 Informatica 会将语句隐式重构为 sh -c "command"。我只需要能够转义双引号
-
在需要时只对引号进行一次转义是正确的。所以,
"executequery.ksh SYNC N \"\" ..."是正确的。请注意单个转义符。然后,executequery.ksh必须正确处理其参数,即使它们包含空格或引号。
标签: shell