How to tell bash that the line continues on the next line

后端 未结 3 2122
灰色年华
灰色年华 2020-12-02 14:23

In a bash script I got from another programmer, some lines exceeded 80 columns in length. What is the character or thing to be added to the line in order to indicate that th

相关标签:
3条回答
  • 2020-12-02 14:33

    The character is a backslash \

    From the bash manual:

    The backslash character ‘\’ may be used to remove any special meaning for the next character read and for line continuation.

    0 讨论(0)
  • 2020-12-02 14:34

    \ does the job. @Guillaume's answer and @George's comment clearly answer this question. Here I explains why The backslash has to be the very last character before the end of line character. Consider this command:

       mysql -uroot \
       -hlocalhost      
    

    If there is a space after \, the line continuation will not work. The reason is that \ removes the special meaning for the next character which is a space not the invisible line feed character. The line feed character is after the space not \ in this example.

    0 讨论(0)
  • 2020-12-02 14:44

    In general, you can use a backslash at the end of a line in order for the command to continue on to the next line. However, there are cases where commands are implicitly continued, namely when the line ends with a token than cannot legally terminate a command. In that case, the shell knows that more is coming, and the backslash can be omitted. Some examples:

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

    Different, but related, is the implicit continuation inside quotes. In this case, without a backslash, you are simply adding a newline to the string.

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

    With a backslash, you are again splitting the logical line into multiple logical lines.

    $ x="foo\
    > bar"
    $ echo "$x"
    foobar
    
    0 讨论(0)
提交回复
热议问题