1

rsh 命令正在删除远程 shell 中的双引号。

例如:我的命令 rsh 10.20.1.25 my_pgm -g "NAME1 NAME2" 在远程 shell my_pgm -g NAME1 NAME2

我也想要远程 shell 中的 -g 选项的双引号。任何的想法?

4

1 回答 1

1

要在字符串中转义双引号,请使用反斜杠:

rsh 10.20.1.25 my_pgm -g "\"NAME1 NAME2\""

实际上,我的 C 程序是这样的 sprintf(cmd_string, "rsh 10.20.1.25 my_pgm -g \"NAME1 NAME2\"");

好的,您的意思是使用system(),请参阅输出echo

#include <stdlib.h>

int main(void)
{
    system("echo \"NAME1 NAME2\""); /* output: NAME1 NAME2 */
    system("echo '\"NAME1 NAME2\"'"); /* output: "NAME1 NAME2" */

    return 0;
}

翻译成你的(注意 NAME1 NAME2 周围的单引号和双引号):

sprintf(cmd_string, "rsh 10.20.1.25 my_pgm -g '\"NAME1 NAME2\"'");

或者正如@nos 指出的那样:

sprintf(cmd_string, "rsh 10.20.1.25 my_pgm -g \\\"NAME1 NAME2\\\"");
于 2014-06-20T09:44:21.590 回答