Показать статистику
0 голосов
от (2.7тыс. баллов)

Я хочу спросить

У меня проблема, как мне получить ввод в bash для перевода строк?

read -p "List Name: " list

cat <<EOF >names.txt
List Names:
$list

EOF

я не могу сделать новую строку или использовать команду \n, как добавить команду новой строки?

Я хочу, чтобы выходные имена результатов .txt были такими

List Name :
    Robert
    James
    Samuel
268 просмотров 1 ответов

1 Ответ

0 голосов
от (26.4тыс. баллов)

Если вам нужен список с одним элементом в строке, вы можете использовать readarray:

# Read list
echo "Enter one name per line, finish with Ctrl-D:"
readarray -t list

# Use list as normal array
echo "Name List:"
printf '%s\n' "${list[@]}"

Теперь вы можете использовать list как обычный массив, например  ${list[1]}

от (26.4тыс. баллов)
0

По умолчанию bash использует пробел в качестве разделителя слов. Этот сценарий оболочки использует символ пробела в качестве разделителя для разделения трех имен, вводимых пользователем. Вставьте следующий сценарий оболочки в текстовый файл с именем input-names.sh, щелкните правой кнопкой мыши input-names.sh, выберите вкладку Свойства  ->  Разрешения  и поставьте галочку слева от  Разрешить выполнение файла как программы .

#!/bin/bash

# Read multiple inputs
echo "Type three names separated by space characters."
read name1 name2 name3
echo "List name :"
echo "    $name1"
echo "    $name2"
echo "    $name3"

Следующий вывод появится после выполнения вышеуказанного скрипта.

:~$ ./input-names.sh
Type three names separated by space characters.
Robert James Samuel
List name :
    Robert
    James 
    Samuel 

...