shell
2017-02-27 96 views 0 likes 
0

我有通过ssh远程数据库到另一个服务器和运行另一个外壳脚本提供的参数作为输入参数包装脚本的Linux - 逃生双引号

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'" 
+1

如果您需要连续三个以上的反斜杠,你可能做错了。我建议你需要编写一个脚本,将脚本复制到远程机器,然后执行脚本。 –

+0

对不起,我不明白你的理解。当您手动调用时,命令运行良好,没有问题。只有在通过Informatica调用时才会失败,因为Informatica将该语句隐式重建为sh -c“command”。我只需要能够逃避双引号 – Kumar

+0

只有在需要时才能退出报价是正确的。所以,''executequery.ksh SYNC N \“\”...“'是正确的。注意单个转义。然后,'executequery.ksh'必须正确对待它的参数,即使它们包含空格或引号**。 – linuxfan

回答

0

提供的输入参数你报价的层内包裹你的工作命令..问题在于你的引号不再匹配......你为什么必须把命令放在双引号中?它会帮助我理解在informatica中运行的内容以及如何设置命令,即如果command是一个变量,我期望它是$$命令,然后我会问当你运行sh -c $$时会发生什么命令?

也可以尝试

sshwrapper.sh executequery.ksh SYNC N “” “” “” DT = '2017年2月10日' “”

相关问题