Search code examples
linuxbashargumentslinefeed

bash - How to pass a line feed to a script?


Here is a simple script called command.sh:

#!/bin/bash

echo "I received: |$1|"

When I call it with a line feed, it doesn't output it:

$ ./command.sh foo\
> bar
I received: |foobar|

Why does the line feed get lost?


Solution

  • Call your script as:

    ./command.sh 'foo
    > bar'
    

    By placing \ before newline you're merely breaking current command line and not really passing newline character to your script.

    If you want to do it in single line then use:

    ./command.sh $'foo\nbar'