我需要將以下例句保存爲名爲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