В bash script я получил от другого программиста, некоторые строки превысили 80 столбцов в длину. Каков характер или предмет, который должен быть добавлен в строку, чтобы указать, что линия продолжается на следующей строке?
Как сообщить bash, что линия продолжается на следующей строке
Ответ 1
Символ - обратная косая черта \
В bash manual:
Символ обратной косой черты '\ может использоваться для удаления любого специального значения для следующего символа, прочитанного и для продолжения строки.
Ответ 2
В общем, вы можете использовать обратную косую черту в конце строки, чтобы команда продолжала переход к следующей строке. Однако есть случаи, когда команды неявно продолжаются, а именно, когда строка заканчивается токеном, чем не может законно прекратить команду. В этом случае оболочка знает, что еще больше, и обратная косая черта может быть опущена. Некоторые примеры:
# 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
Ответ 3
\
выполняет задание. Ответы @Guillaume и комментарий @George четко отвечают на этот вопрос. Здесь я объясняю, почему The backslash has to be the very last character before the end of line character.
Рассмотрим эту команду:
mysql -uroot \ -hlocalhost
Если после \
есть пробел, продолжение строки не будет работать. Причина в том, что \
удаляет особое значение для следующего символа, который является пространством, а не невидимым символом линии. Символ перевода строки после пробела \
в этом примере.