it-swarm.com.ru

Создание файлов с некоторым содержимым с помощью сценария Shell

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

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

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

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

я смотрю что-то вроде этого

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

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

спасибо

33
Mahes

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

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

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

67
Dennis Williamson

Вот так:

#!/bin/bash

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

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

6
Victor Sorokin

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

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

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

6
Allwin
>\#!/bin/bash
>
>var="your text" <br>
>echo "simply put, <br>
>just so: $var" > a.config

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

так что если мы определим следующее: 

переменная = "100"

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

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

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

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

1
scotjam1981

Если в вашем тексте есть переменные типа $ 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
Deepak Rao