Поп! _Невидимый ввод терминала ОС

Предположим, вы хотите присвоить строку some long piece of text to assignпеременной str. Это не сработает:

str='some long'
'piece of text'
'to assign'

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

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

str='some long
piece of text
to assign'

Хотя вы можете использовать расширение замены подстроки (в Bash, ksh, zsh ), чтобы заменить их пробелами, например. str="${str//$'\n'/ }", чтобы выполнить замену и сохранить новое значение в той же переменной. Обратите внимание, что любой завершающий пробел во всех строках, кроме последней, останется в строке.

Другой вариант — использовать +=для добавления к значению переменной (также только Bash, ksh, zsh):

str='some long'
str+=' piece of text'
str+=' to assign'

Здесь любой пробел нужно будет ввести вручную в кавычках.

Или аналогично в стандартной оболочке:

str='some long'
str="$str"' piece of text'
str="$str"' to assign'

Тогда есть способ с продолжением строки (, который Джефф уже упоминал в их ответе):

str='some long'\
' piece of text'\
' to assign'

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

4
27.06.2019, 14:50
0 ответов

Теги

Похожие вопросы