В настоящее время я работаю над сценарием, предназначенным для добавления нового поколения проекта для любого базового редактора. Я использую следующую структуру для создания правильной базовой программы (привет, мир) в соответствии с языком, выбранным пользователем:
#!/bin/sh
#this is a short example in the case the user selected C as the language
TXTMAIN="\$TXTMAIN_C"
$TXTMAIN_C="#include <stdlib.h>
#include <stdio.h>
int main(int argc, char const* argv[])
{
printf(\"hello, world\n\");
return EXIT_SUCCESS;
}"
MAIN="./main.c"
touch MAIN
echo -n "$(eval echo $TXTMAIN)" >> "$MAIN"
gedit MAIN
Этот фрагмент кода дает следующий результат при редактировании main.c:
#include <stdlib.h> #include <stdio.h> int main(int argc, char const* argv[]) { printf("hello, world\n"); return EXIT_SUCCESS; }
Однако при замене строки 13 на echo -n "$TXTMAIN_C" >> "$MAIN" это дает правильный вывод:
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char const* argv[])
{
printf("hello, world\n");
return EXIT_SUCCESS;
}
Я до сих пор не знаю, является ли это проблемой эха или eval, или есть ли способ обойти мою проблему с указателем. Любые советы очень приветствуются!
TXTMAIN_C='#include ...
, так как вам не нужно экранировать или \. - person William Pursell   schedule 09.02.2013