У меня есть шаблон файла, который будет использоваться сценарием оболочки для создания других файлов и просто изменить информацию о заполнении внутри этого шаблона файла с помощью переменных.
содержимое файла template.example.log
:
server name: $HOSTNAME
current user: $USER
Я пробую разные способы сделать это работает.
содержимое файла log.sh
:
1) не работают выходной файл some_log_1.log
такой же как template.example.log
и переменные не менялись.
FILE_TEMPLATE="`cat template.example.log`"
cat > some_log_1.log <<EOF
$FILE_TEMPLATE
EOF
2) не работают с командой echo, происходит то же, что и выше.
echo $FILE_TEMPLATE > some_log_1.log
но если я это сделаю, это сработает!
cat > some_log_1.log <<EOF
server name: $HOSTNAME
current user: $USER
EOF
вывод правильный!
server name: ubuntu-server
current user: leafar
но я не хочу, чтобы сценарий запускался таким образом. Я хочу прочитать содержимое текстового файла и перенести его в другой текстовый файл и fill the variables
.
КАК Я МОГУ ЭТО СДЕЛАТЬ? СПАСИБО. Ps: извините за мой слабый английский
Один из вариантов - использовать sed
для редактирования файлов. Это позволяет вам ограничить количество заполняемых переменных.
Это заполнит template.txt и выведет его в fill.txt:
sed -e "s/\$HOSTNAME/$HOSTNAME/" -e "s/\$USER/$USER/" template.txt > filled.txt
template.txt:
server name: $HOSTNAME
current user: $USER
fill.txt:
server name: ubuntu-server
current user: leafar