Как я могу перенести вывод переменной на новую строку в bash?

Как можно изменить скрипт, чтобы переменная $top_directories правильно разделялась на новые строки при отправке сообщения?
  • 5 января 2024 г. 12:58
Ответы на вопрос 2
Чтобы перенести вывод переменной на новую строку в bash, вы можете использовать символ новой строки `\n` в строках, обрамляемых двойными кавычками. Также, чтобы интерпретировать символ новой строки, необходимо использовать команду `echo` с опцией `-e`.

Вот пример:

```bash
#!/bin/bash

variable="первая строка\nвторая строка"
echo -e "$variable"
```

Выполнение этого скрипта выведет:

```
первая строка
вторая строка
```

Теперь, по поводу вашего второго вопроса о переменной `$top_directories`, предполагаем, что вы хотите, чтобы каждое значение или элемент в этой переменной начинался с новой строки. Допустим, что `$top_directories` содержит список директорий, разделенных пробелами. В этом случае вы можете заменить пробелы на символы новой строки с помощью команды `tr`:

```bash
#!/bin/bash

top_directories="dir1 dir2 dir3"
echo "$top_directories" | tr ' ' '\n'
```

Когда вы выполняете этот скрипт, вывод будет следующим:

```
dir1
dir2
dir3
```

Если переменная `$top_directories` уже содержит переносы строк, и вы хотите отправить ее содержимое в качестве сообщения (например, в команду `mail` для отправки электронной почты), вам необходимо убедиться, что команда обрабатывает переносы строк корректно. Обычно, если вы передаете переменную в качестве части команды `echo -e`, её содержимое будет интерпретироваться с новыми строками правильно:

```bash
#!/bin/bash

top_directories=$(echo -e "dir1\ndir2\ndir3")
echo -e "Следующие директории занимают больше всего места:\n$top_directories"
```

Выполнение этого скрипта должно дать вам следующее:

```
Следующие директории занимают больше всего места:
dir1
dir2
dir3
```

Разделители строк будут учтены при отправке сообщения. Если вы посылаете это через `mail`, просто убедитесь, что вы используете `echo -e`, как показано выше, или другую команду, которая корректно обрабатывает переводы строк.
1. ну сам же мог в консоле отлаживать, делаешь echo -n "Внимание\nСвободное" и упс 
2. открываешь гугл и пишешь "bash echo new line"
Похожие вопросы