bash – добавить пустую строку в heredoc через переменную

Если я использую этот сценарий в скрипте:

#!/bin/bash addvline=$(if [ "$1" ]; then echo "$1"; echo; fi) cat << EOF this is the first line $addvline this is the last line EOF 

если $1 – emty, я получаю пустую строку.
Но как я могу добавить пустую строку после $1 для случая, когда это не emty?

Таким образом, в случае запуска скрипта:
bash script.sh hello

Я бы получил:

 this is the first line hello this is the last line 

Я попытался добиться этого, используя второе echo в if statement , но новая строка не проходит.

2 Solutions collect form web for “bash – добавить пустую строку в heredoc через переменную”

Пусть, if решите установить содержимое переменной, чтобы не использовать подстановку команд.

 if [ "$1" ]; then addvline=$1$'\n'; fi 

Затем:

 #!/bin/bash if [ "$1" ]; then addvline=$1$'\n'; fi cat << EOF this is the first line $addvline this is the last line EOF 

Для этого есть несколько решений. Сначала давайте создадим переменную, которая содержит новую строку, которая будет использоваться позже (в bash):

 nl=$'\n' 

то он может быть использован для построения переменной, подлежащей печати:

 #!/bin/bash nl=$'\n' if [ "$1" ]; then addvline="$1$nl" else addvline="" fi cat << EOF this is the first line $addvline this is the last line EOF 

Или вы могли бы избежать, if полностью, если используете правильное расширение параметра:

 #!/bin/bash nl=$'\n' addvline="${1:+$1$nl}" cat << EOF this is the first line $addvline this is the last line EOF 

Или в одном более простом коде:

 #!/bin/bash nl=$'\n' cat << EOF this is the first line ${1:+$1$nl} this is the last line EOF 
  • Отложить переменное расширение до подоболочки
  • Развертывание Jenkins не передается переменной java
  • Невозможно назначить вывод вложенных команд переменной в bash
  • Назначить имя хоста переменной в ksh
  • Shell: как использовать 2 переменные с условием
  • Сценарий Bash для заполнения шаблона
  • Использование «$ {a: -b}» для назначения переменных в скриптах
  • Как присвоить значение переменной, когда значение содержит символ $ в ней
  • Функция проверки переменной BASH
  • Установка переменной, значение которой зависит от другой переменной
  • как получить или отразить имя вызываемой функции bash?
  • Interesting Posts

    почему размер файла Inode отличается от фактического размера

    Определение того, работает ли переключение GPU?

    Запуск системы и запуск одного ядра моего процессора

    Как автоматически сортировать флаги параметров в руководстве?

    Скрипт для отправки почты, если в журнале не было записи в течение определенного времени

    Как я могу сделать доступную для чтения систему Linux (которая использует unionfs) для чтения / записи на время обновления?

    SSH через прокси-сервер Socks без имени пользователя или пароля

    Как запустить команду (ifup eth0) 10 секунд ПОСЛЕ загрузки настольного компьютера?

    Как я могу позволить людям установить мой пакет с помощью apt-get?

    php: команда не найдена на centos

    Раздел «X» не начинается с границы физического сектора

    Где должен быть установлен grub, MBR или корень? рабочий стол по умолчанию для настольных компьютеров

    круговое вращение по времени tcpdump

    Как изменить оболочку cron (sh на bash)?

    Как создавать резервные копии файлов теневого копирования / etc / {, g} с разрешением 0000?

    Linux и Unix - лучшая ОС в мире.