LINUX.ORG.RU
ФорумAdmin

Шаблон, что ли...

 ,


0

1

Нужно Скопировать на некоторые сервера файлик. Но для каждого сервера нужно использовать свои данные. Грубо говоря, выглядит это так:

./install 111.111.111.112

Этот скрипт генерит файл с содержимым:

... Your IP: 111.111.111.112 ...

Текста много и нужно в некоторых местах указать то, что будет передано в качестве аргумента. Я предпологалаю, что текст выше это файл template.txt с содержимым:

... Your IP: {$1} ...

Подскажите как реализовать подобное? Что-то сходу вообще ничего не пришло в голову...


IP="111.111.111.112"

cat >target-file <<EOF
Text here
Your ip: $IP
EOF

В файл target-file запишется текст

Text here
Your ip: 111.111.111.112

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Это мне известно, но мне нужно чтоб шаблон лежал отдельно. В шаблоне будет много всего, только в некоторые места надо вставлять нужные данные. Не пихать же мне весь текст в скрипт... не разумно как-то.

modjo
() автор топика

Попробуй sed.

$ cat TEMPLATE 
Your IP: <IP>
Some other string
$ cat TEMPLATE | sed 's/<IP>/111.111.111.112/'
Your IP: 111.111.111.112
Some other string

E ★★★
()
Ответ на: комментарий от modjo

Ну тогда можно генерить скрипт на ходу.

GENERATED="/tmp/generated-$$"
TEMPLATE="template.txt"
DESTINATION="destination.txt"

{
echo "#!/bin/bash"
echo "cat <<EOF"
cat "$TEMPLATE"
echo "EOF"
} > "$GENERATED"

chmod +x "$GENERATED"
export IP # экспортируем все переменные, которые будут участвовать в подстановке
"$GENERATED" > "$DESTINATION"
rm -f "$GENERATED"
intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от E

Да, очень приемлемо. Спасибо за напоминание про sed.

modjo
() автор топика
Ответ на: комментарий от intelfx

Вариант, но как-то громоздко. Но всего же спасибо. Возможно и это пригодится.

modjo
() автор топика
[X]~/ $cat 1.sh
#!/bin/sh


IP="1.2.3.4"
TPL="tpl.txt"

while read line; do
	eval echo "$line"
done < $TPL

[X]~/ $cat tpl.txt
Some test here
Your IP is ${IP}

[X]~/ $./1.sh 
Some test here
Your IP is 1.2.3.4
joy4eg ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.