Bash строки ввода с пробелами - PullRequest
1 голос
/ 06 марта 2019

Я изо всех сил пытаюсь понять, как мы обрабатываем ввод bash read, когда пользователю нужно вводить данные с пробелом.

Может кто-нибудь дать простое объяснение?

read -p 'Artist: ' ARTIST
read -p 'Album: ' ALBUM
read -p 'Genre: ' GENRE

Одно слово Artist (Bjork) будет работать нормально, но как только вы попытаетесь ввести, например, имя и фамилию, вся система рушится.

Я предполагаю, что единственный способ, которым я смогу это сделать, - обработать каждый ввод индивидуально с помощью цикла, а затем сконцентрировать строку в одну переменную с неповрежденными пробелами.

Ответы [ 2 ]

3 голосов
/ 06 марта 2019

У вас, похоже, есть опечатка в выражении read.Должен быть пробел между завершающей кавычкой -p и переменной-заполнителем, без того же самого чтения, которое неправильно сжимает сообщение подсказки, как

read -p 'Artist: ARTIST'

, где оно должно было быть

read -p 'Artist: ' ARTIST
#               ^^^^

Вы могли видеть вторую работу, как и ожидалось.Также с правильными кавычками ваш скрипт должен работать как положено

bash script.sh
Artist: John Lenon
Album: The Beatles

ставит результат как положено.


Этот вопрос был отредактирован начиная с первого поста, в котором возникла проблема с read утверждение в кавычках.Мой оригинальный ответ был предназначен, чтобы ответить на это.С тех пор вопрос был изменен, что больше похоже на Bash: сохранить строку с пробелами, введенными в командной строке?

0 голосов
/ 06 марта 2019

Вы сделали это правильно - посмотрите эту стенограмму из моего bash:

~ $ read -p 'Artist: ' ARTIST
Artist: Ronald Fischer
~ $ echo $ARTIST
Ronald Fischer
~ $

Убедитесь, что у вас действительно запущен bash и что при тестировании кода вы случайно не вводите некоторые символы вне диапазона ASCII; эти символы следует проверять только после того, как вы убедились, что пробелы во входных данных работают.

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