如何告诉bash该行继续在下一行

时间:2010-10-06 09:57:08

标签: bash

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

3 个答案:

答案 0 :(得分:98)

该字符是反斜杠\

来自bash manual

  

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

答案 1 :(得分:28)

通常,您可以在一行的末尾使用反斜杠,以便命令继续到下一行。但是,有些情况下隐含地继续命令,即当行以令牌结束而不是合法地终止命令时。在这种情况下,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

答案 2 :(得分:14)

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

   mysql -uroot \
   -hlocalhost      

如果\之后有空格,则续行不起作用。原因是\删除了下一个字符的特殊含义,即下一个字符不是不可见换行符。换行符在此示例中位于空格$('#toggle').on('click', function() { $('[data-toggle="popover"]').popover('toggle'); }); 之后。