我需要将下面的例句保存为名为demo.sh的文件。

#!/usr/bin/env bash
xmessage This is "first sentence"
xmessage This is 'second sentence'
xmessage This is {third sentence}


我在C语言中使用的代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    system("sudo bash -c 'printf \"#!/usr/bin/env bash\n\" > /usr/share/applications/demo.sh'");
    return 0;
}


我可以将以上4句话中的第一句话写到文件中。但是其他句子包含特殊字符,例如single quotesdouble quotesline ending character。这很难避免,因为sudo命令需要有两个嵌套部分,我试图分别用'"包装。

我该如何转义句子并将其写出到文件中?具有某些功能会很棒,因为实际上该文件超过4个句子并且具有许多特殊字符。

需要注意的是,我知道我可以使用C的I / O功能,我想通过一个使用systemsudoprintfone line string命令写入文件。

最佳答案

我不认为这是最好的方法,但是您可以将一个char []变量用于系统命令,并将sprintf()函数用于在此变量中拆分和写入命令

这是一个例子

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    char command[128];

    /* Generate string */
    sprintf(command, "sudo bash -c %s %s bash\n > /usr/share/applications/demo.sh'",
        "'printf", "#!/usr/bin/env");

    system(command);
    return 0;
}

关于c - 如何正确转义嵌套的特殊字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29435381/

10-12 13:55