Как элегантно хранить и отображать несколько строк в bash, ответ не работает? - PullRequest
0 голосов
/ 22 апреля 2019

Я попробовал решение, показанное в разделе «Как элегантно хранить и отображать несколько строк в bash?»со 2 мая 2010 года, который должен был заключаться в двойные кавычки, чтобы пометить строковую переменную, чтобы она распознала несколько строк в блоке.Без кавычек я получаю полный строковый дамп в одну оберточную строку, как в примере из предыдущего вопроса.Но когда я добавляю двойные кавычки вокруг «$ VAR», поскольку ответ говорит, что должен работать, все, что я получаю, это двойная кавычка, за которой следуют два вопросительных знака «??

. Это в .bash_promptфайл, вызванный файлом .bascrc, который был вызван файлом .bash_profile

Все остальные элементы, а их много, каждый из которых вызывается этими файлами, работает нормально. К ним относятся пути, cd, prompt, server,элементы git location и т. д. Все, что я пытаюсь добавить, - это многострочный оператор, указывающий пользователю на то, что он может ожидать, и команды, которые могут ему понадобиться, если репозиторий Gitlab еще не подключен из-за перезагрузки сервера,перезагрузка терминала и т. д. с момента их последнего активного использования.

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

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

read -d '' tell_user <<"BLOCK"
    If you are planning to utilize Gitlab.com repository?, wait until prompts 
    turn colors.
    YOU MAY NEED TO RUN THE COMMAND ssh-add ~/Directory/ed29183 (Dir & #'s 
    faked) 
    THEN AWAIT A REPLY OF Identity added:
    THEN RUN THE COMMAND ssh -T git@gitlab.com
    TO CONNECT TO THE GITLAB REPOSITORY
BLOCK

echo “$tell_user”

ОЖИДАЕМЫЙ РЕЗУЛЬТАТ:

If you are planning to utilize Gitlab.com repository?, wait until prompts turn colors.
YOU MAY NEED TO RUN THE COMMAND ssh-add ~/Directory/ed29183  
THEN AWAIT A REPLY OF Identity added:
THEN RUN THE COMMAND ssh -T git@gitlab.com
TO CONNECT TO THE GITLAB REPOSITORY

НАБЛЮДЕННЫЙ РЕЗУЛЬТАТ:

"??

ВОЗМОЖНЫЕ ШАГИ ОТВЕТОВ: Вы, вероятно, видите, что я в основном стремлюсь к тому, чтобы убедиться, что локальная машина подключена к Gitlab и к хранилищу, чтобы во время разработки, если подключение отсутствовало, пользователь знал это и как подключиться, чтобы они моглидобавлять и фиксировать любые обновления и т. д. Оперативные изменения, частью которых является этот небольшой фрагмент кода, уже сообщают пользователю, где они находятся на своей физической машине с именем машины и сокращенным путем, а также сообщают, какой мастер или ветвь Git они представляют.работает в. Самый первый оператор во фрагменте, который говорит, что «подождите, пока приглашение меняет цвет», настроен таким образом, чтобы он делал это, когда соединение есть.Я действительно хотел рассмотреть пошаговые подсказки терминала, которые требовали ввода данных от пользователя и удаленного компьютера, чтобы «проверить» состояние подключения, спросить пользователя, нужно ли ему это и нужно ли оно, если оно не установлено, и затем выполнить соответствующие действия ветвления.(включая обработку задержки для скорости соединения).Так что, если у кого-то есть более блестящий ответ с большей функциональностью, я весь в ушах.
Но сейчас я был бы рад, если бы я мог просто посылать это сообщение построчно, а не один длинный дамп строки.

Ответы [ 2 ]

2 голосов
/ 22 апреля 2019

Использовали ли вы "умные" цитаты?

echo “$tell_user”

Bash их не понимает.Вместо этого используйте обычные двойные кавычки:

echo "$tell_user"

Работает для меня:

$ echo $tell_user
If you are planning to utilize Gitlab.com repository?, wait until prompts turn colors. YOU MAY NEED TO RUN THE COMMAND ssh-add ~/Directory/ed29183 (Dir & #'s faked) THEN AWAIT A REPLY OF Identity added: THEN RUN THE COMMAND ssh -T git@gitlab.com TO CONNECT TO THE GITLAB REPOSITORY

$ echo "$tell_user"
If you are planning to utilize Gitlab.com repository?, wait until prompts 
    turn colors.
    YOU MAY NEED TO RUN THE COMMAND ssh-add ~/Directory/ed29183 (Dir & #'s 
    faked) 
    THEN AWAIT A REPLY OF Identity added:
    THEN RUN THE COMMAND ssh -T git@gitlab.com
    TO CONNECT TO THE GITLAB REPOSITORY
0 голосов
/ 24 апреля 2019

Возможно, у вас есть кавычки вокруг БЛОКА ("БЛОК").Попробуйте удалить их

...