Создание файлов с некоторым содержимым с помощью сценария оболочки - PullRequest
34 голосов
/ 02 февраля 2011

Мне нужно настроить сервер с небольшим количеством файлов, и я хочу сделать это программно.

Мне нужно создать файлы, скажем /home/a.config, /var/spool/b.config, / etc/c.config

вышеупомянутые файлы имеют некоторое содержимое (несколько строк).

Я хочу создать ОДИН сценарий оболочки, который может создать все три файла с несколькими строками (около 10).Я хотел бы знать, как я могу использовать команду CAT, чтобы сделать это.(внутри сценария оболочки).

Я выгляжу как-то так

echo " going to create  /home/a.config"

cat "HOW CAN I HAVE MULTIPLE LINES HERE?? " >  /home/a.config 

спасибо

Ответы [ 5 ]

72 голосов
/ 02 февраля 2011

Вы можете использовать здесь документ:

cat <<EOF >/home/a.config
first line
second line
third line
EOF

Вы можете поместить несколько из них в один и тот же скрипт.

8 голосов
/ 29 июля 2016

Файл = "/ TMP / test.txt"
echo "Добавление первой строки"> $ file
echo "Добавление первой строки заменено"> $ file
echo "Добавление второй строки" >> $ file
echo "Добавление третьей строки" >> $ file
cat $ file

> для добавления / замены содержимого (здесь фактическое содержимое заменено на 2-ю строку)
>> , чтобы добавить

Результат
Добавление первой строки заменено
Добавляем вторую строку
Добавляем третью строку

6 голосов
/ 02 февраля 2011

Примерно так:

#!/bin/bash

var="your text"
echo "simply put,
just so: $var" > a.config

Для получения дополнительной информации см. Часть ввода / вывода в abs .
Надеюсь, это поможет.

2 голосов
/ 20 сентября 2017

Если в вашем тексте есть переменные типа $ 1 или $ HOMEDIR, то они обычно оцениваются и заменяются фактическими значениями.Если вы хотите предотвратить их замену, вам нужно заключить в строку начального лимита (EOF в приведенном ниже примере) одинарную кавычку 'EOF', двойную кавычку "EOF" или поставить перед ней обратную косую черту \EOF

Закрывающая лимитная строка остается как есть.EOF

Это особенно полезно, если вы пишете сценарии оболочки в файл.

cat << 'EOF' >/etc/rc.d/init.d/startup
case $1 in
    start)
        start 
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    status)
       pid=$(tomcat_pid)
        if [ -n "$pid" ]
        then
           echo "Tomcat is running with pid: $pid"
        else
           echo "Tomcat is not running"
        fi
        ;;
esac

EOF

См. Пример 19.7 Подстановка параметров отключена в Здесь документы

1 голос
/ 20 декабря 2012
>\#!/bin/bash
>
>var="your text" <br>
>echo "simply put, <br>
>just so: $var" > a.config

Обратите внимание, что вам также нужно экранировать определенные символы, чтобы избежать их вмешательства в то, что вы пытаетесь сделать, например, $ `и" все будут ломать такое утверждение, если не предшествует обратный слеш, т.е. \ "

, поэтому, если мы определим следующее:

вар = "100"

следующее не будет вести себя как ожидалось:

эхо ", проще говоря,
просто "одолжите" мне $ $ var "> a.config

но следующее будет работать правильно:

эхо ", проще говоря,
просто \ "одолжите \" мне US $ $ var "> a.config

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...