У сценарії bash, який я отримав від іншого програміста, довжина деяких рядків перевищувала 80 стовпців. Який символ або річ слід додати до рядка, щоб вказати, що рядок продовжується на наступному рядку?
У сценарії bash, який я отримав від іншого програміста, довжина деяких рядків перевищувала 80 стовпців. Який символ або річ слід додати до рядка, щоб вказати, що рядок продовжується на наступному рядку?
Відповіді:
Персонаж є зворотною рискою рискою \
Символ зворотної косої риски '\' може бути використаний для видалення будь-якого особливого значення для наступного прочитаного символу та продовження рядка.
^M. Проблема полягає в тому, що сценарій мені передав той, хто використовує Windows. Швидко dos2unixце виправили :)
Загалом, ви можете використовувати зворотну скісну риску в кінці рядка, щоб команда продовжила наступний рядок. Однак бувають випадки, коли команди неявно продовжуються, а саме, коли рядок закінчується маркером, ніж не може законно завершити команду. У цьому випадку оболонка знає, що надходить більше, і зворотну косу риску можна опустити. Деякі приклади:
# In general
$ echo "foo" \
> "bar"
foo bar
# Pipes
$ echo foo |
> cat
foo
# && and ||
$ echo foo &&
> echo bar
foo
bar
$ false ||
> echo bar
bar
Різним, але пов’язаним, є неявне продовження всередині лапок. У цьому випадку без зворотної скісної риски ви просто додаєте новий рядок до рядка.
$ x="foo
> bar"
$ echo "$x"
foo
bar
За допомогою зворотної косої риски ви знову ділите логічний рядок на кілька логічних рядків.
$ x="foo\
> bar"
$ echo "$x"
foobar
[[- ]]стан, але не в інших, і я намагаюся з'ясувати правила.
\робить роботу. Відповідь @ Гійома та коментар @ George чітко відповідають на це питання. Тут я пояснюю, чому The backslash has to be the very last character before the end of line character.розглянемо цю команду:
mysql -uroot \ -hlocalhost
Якщо після є пробіл \, продовження рядка не буде працювати. Причина полягає в тому, що \ вилучається особливе значення для наступного символу, який є пробілом, а не символом подачі невидимих рядків. Символ рядка подається після пробілу, не вказаного \в цьому прикладі.