我需要将以下例句保存为名为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 quotes
,double quotes
和line ending character
。由于sudo
命令需要分别包含'
和"
的两个嵌套段,因此难以逃脱。
如何逃避句子并写出文件?有一些功能会很棒,因为实际上文件超过4个句子,并且有很多特殊字符。
作为一个说明,我知道我可以用C的I/O功能,我想通过一个单一的system
命令,它使用sudo
,printf
和one line string
写入文件。
使用'system'实际上与在终端中输入这些命令相同,有什么理由不这样做? – 2015-04-03 15:53:53
在测试期间,程序无法写入'/ usr/share/applications /'位置,因为它属于'root'。我看到使用'sudo bash -c'方式在终端工作。所以我想把终端方式转换成C程序。对于简单的句子来说,它变得很棒,但是只要句子中包含特殊字符,它就非常复杂。 – Jessie 2015-04-03 16:06:44
这不是将它移植到C,这只是通过C程序执行相同的bash命令。 – 2015-04-03 16:10:00