如何告诉 bash 下一行继续

在我从另一个程序员那里得到的 bash 脚本中,有些行的长度超过了80列。为了表示该行在下一行继续,要添加到该行的字符或事物是什么?

197355 次浏览

字符是反斜杠 \

来自 Bash 手册:

反斜杠字符‘’可用于删除任何特殊含义 用于下一个字符读取和行继续。

\完成任务。@ Guillaume 的回答和@George 的评论清楚地回答了这个问题。这里我解释了为什么 The backslash has to be the very last character before the end of line character.考虑这个命令:

mysql -uroot \
-hlocalhost

如果在 \之后有一个空格,则行继续将不起作用。原因是 \删除了下一个字符的特殊含义,这个字符是一个空格,而不是不可见的换行符。换行符位于空格之后,而不是本例中的 \

通常,可以在行尾使用反斜杠,以便命令继续到下一行。但是,在有些情况下,命令是隐式继续的,即当行以一个标记结束而不能合法地终止命令时。在这种情况下,shell 知道会有更多的反斜杠出现,因此可以省略反斜杠。一些例子:

# 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