如何判断线路是否在下一行继续

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

该字符是一个反斜杠\

从bash手册 :

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

一般来说,你可以在行的末尾使用反斜杠,以便命令继续到下一行。 但是,有些情况下命令是隐式继续的,也就是说,当行以一个标记结束时,不能合法地终止一个命令。 在这种情况下,shell知道更多的东西来了,反斜杠可以省略。 一些例子:

 # In general $ echo "foo" \ > "bar" foo bar # Pipes $ echo foo | > cat foo # && and || $ echo foo && > echo bar foo bar $ false || > echo bar bar 

不同但相关的是引号内的隐含延续。 在这种情况下, 如果没有反斜杠,则只需在string中添加一个换行符。

 $ x="foo > bar" $ echo "$x" foo bar 

使用反斜杠,您又将逻辑线分成多个逻辑线。

 $ x="foo\ > bar" $ echo "$x" foobar 

做这个工作。 @纪尧姆的答案和@乔治的评论清楚地回答了这个问题。 这里我解释了为什么The backslash has to be the very last character before the end of line character. 考虑这个命令:

    mysql -uroot \
    -hlocalhost      

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