bash - add blank line to heredoc via variable
Clash Royale CLAN TAG#URR8PPP
up vote
0
down vote
favorite
If I am using this scenario in a script:
#!/bin/bash
addvline=$(if [ "$1" ]; then echo "$1"; echo; fi)
cat << EOF
this is the first line
$addvline
this is the last line
EOF
if $1
is emty I get a blank line.
But how can I add a blank line after $1
for the case it is not emty?
So in the case running the script like:bash script.sh hello
I would get:
this is the first line
hello
this is the last line
I tried to achieve this with using a second echo
in the if statement
, but the newline does not get passed.
bash variable cat here-document
add a comment |Â
up vote
0
down vote
favorite
If I am using this scenario in a script:
#!/bin/bash
addvline=$(if [ "$1" ]; then echo "$1"; echo; fi)
cat << EOF
this is the first line
$addvline
this is the last line
EOF
if $1
is emty I get a blank line.
But how can I add a blank line after $1
for the case it is not emty?
So in the case running the script like:bash script.sh hello
I would get:
this is the first line
hello
this is the last line
I tried to achieve this with using a second echo
in the if statement
, but the newline does not get passed.
bash variable cat here-document
add a comment |Â
up vote
0
down vote
favorite
up vote
0
down vote
favorite
If I am using this scenario in a script:
#!/bin/bash
addvline=$(if [ "$1" ]; then echo "$1"; echo; fi)
cat << EOF
this is the first line
$addvline
this is the last line
EOF
if $1
is emty I get a blank line.
But how can I add a blank line after $1
for the case it is not emty?
So in the case running the script like:bash script.sh hello
I would get:
this is the first line
hello
this is the last line
I tried to achieve this with using a second echo
in the if statement
, but the newline does not get passed.
bash variable cat here-document
If I am using this scenario in a script:
#!/bin/bash
addvline=$(if [ "$1" ]; then echo "$1"; echo; fi)
cat << EOF
this is the first line
$addvline
this is the last line
EOF
if $1
is emty I get a blank line.
But how can I add a blank line after $1
for the case it is not emty?
So in the case running the script like:bash script.sh hello
I would get:
this is the first line
hello
this is the last line
I tried to achieve this with using a second echo
in the if statement
, but the newline does not get passed.
bash variable cat here-document
bash variable cat here-document
asked Oct 1 '17 at 16:23
nath
633421
633421
add a comment |Â
add a comment |Â
2 Answers
2
active
oldest
votes
up vote
1
down vote
accepted
Let if
decide to set your variable content not to use command substitution.
if [ "$1" ]; then addvline=$1$'n'; fi
Then:
#!/bin/bash
if [ "$1" ]; then addvline=$1$'n'; fi
cat << EOF
this is the first line
$addvline
this is the last line
EOF
add a comment |Â
up vote
1
down vote
There are several solutions to this. First, let's create a variable that contains a newline to be used later (in bash):
nl=$'n'
then it could either be used to construct the variable to be printed:
#!/bin/bash
nl=$'n'
if [ "$1" ]; then
addvline="$1$nl"
else
addvline=""
fi
cat << EOF
this is the first line
$addvline
this is the last line
EOF
Or you could avoid the if
entirely if you use the correct parameter expansion:
#!/bin/bash
nl=$'n'
addvline="$1:+$1$nl"
cat << EOF
this is the first line
$addvline
this is the last line
EOF
Or, in one simpler code:
#!/bin/bash
nl=$'n'
cat << EOF
this is the first line
$1:+$1$nl
this is the last line
EOF
add a comment |Â
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
accepted
Let if
decide to set your variable content not to use command substitution.
if [ "$1" ]; then addvline=$1$'n'; fi
Then:
#!/bin/bash
if [ "$1" ]; then addvline=$1$'n'; fi
cat << EOF
this is the first line
$addvline
this is the last line
EOF
add a comment |Â
up vote
1
down vote
accepted
Let if
decide to set your variable content not to use command substitution.
if [ "$1" ]; then addvline=$1$'n'; fi
Then:
#!/bin/bash
if [ "$1" ]; then addvline=$1$'n'; fi
cat << EOF
this is the first line
$addvline
this is the last line
EOF
add a comment |Â
up vote
1
down vote
accepted
up vote
1
down vote
accepted
Let if
decide to set your variable content not to use command substitution.
if [ "$1" ]; then addvline=$1$'n'; fi
Then:
#!/bin/bash
if [ "$1" ]; then addvline=$1$'n'; fi
cat << EOF
this is the first line
$addvline
this is the last line
EOF
Let if
decide to set your variable content not to use command substitution.
if [ "$1" ]; then addvline=$1$'n'; fi
Then:
#!/bin/bash
if [ "$1" ]; then addvline=$1$'n'; fi
cat << EOF
this is the first line
$addvline
this is the last line
EOF
answered Oct 1 '17 at 17:35
ñÃÂsýù÷
15.7k92563
15.7k92563
add a comment |Â
add a comment |Â
up vote
1
down vote
There are several solutions to this. First, let's create a variable that contains a newline to be used later (in bash):
nl=$'n'
then it could either be used to construct the variable to be printed:
#!/bin/bash
nl=$'n'
if [ "$1" ]; then
addvline="$1$nl"
else
addvline=""
fi
cat << EOF
this is the first line
$addvline
this is the last line
EOF
Or you could avoid the if
entirely if you use the correct parameter expansion:
#!/bin/bash
nl=$'n'
addvline="$1:+$1$nl"
cat << EOF
this is the first line
$addvline
this is the last line
EOF
Or, in one simpler code:
#!/bin/bash
nl=$'n'
cat << EOF
this is the first line
$1:+$1$nl
this is the last line
EOF
add a comment |Â
up vote
1
down vote
There are several solutions to this. First, let's create a variable that contains a newline to be used later (in bash):
nl=$'n'
then it could either be used to construct the variable to be printed:
#!/bin/bash
nl=$'n'
if [ "$1" ]; then
addvline="$1$nl"
else
addvline=""
fi
cat << EOF
this is the first line
$addvline
this is the last line
EOF
Or you could avoid the if
entirely if you use the correct parameter expansion:
#!/bin/bash
nl=$'n'
addvline="$1:+$1$nl"
cat << EOF
this is the first line
$addvline
this is the last line
EOF
Or, in one simpler code:
#!/bin/bash
nl=$'n'
cat << EOF
this is the first line
$1:+$1$nl
this is the last line
EOF
add a comment |Â
up vote
1
down vote
up vote
1
down vote
There are several solutions to this. First, let's create a variable that contains a newline to be used later (in bash):
nl=$'n'
then it could either be used to construct the variable to be printed:
#!/bin/bash
nl=$'n'
if [ "$1" ]; then
addvline="$1$nl"
else
addvline=""
fi
cat << EOF
this is the first line
$addvline
this is the last line
EOF
Or you could avoid the if
entirely if you use the correct parameter expansion:
#!/bin/bash
nl=$'n'
addvline="$1:+$1$nl"
cat << EOF
this is the first line
$addvline
this is the last line
EOF
Or, in one simpler code:
#!/bin/bash
nl=$'n'
cat << EOF
this is the first line
$1:+$1$nl
this is the last line
EOF
There are several solutions to this. First, let's create a variable that contains a newline to be used later (in bash):
nl=$'n'
then it could either be used to construct the variable to be printed:
#!/bin/bash
nl=$'n'
if [ "$1" ]; then
addvline="$1$nl"
else
addvline=""
fi
cat << EOF
this is the first line
$addvline
this is the last line
EOF
Or you could avoid the if
entirely if you use the correct parameter expansion:
#!/bin/bash
nl=$'n'
addvline="$1:+$1$nl"
cat << EOF
this is the first line
$addvline
this is the last line
EOF
Or, in one simpler code:
#!/bin/bash
nl=$'n'
cat << EOF
this is the first line
$1:+$1$nl
this is the last line
EOF
edited Oct 1 '17 at 19:44
Jeff Schaller
32.3k849109
32.3k849109
answered Oct 1 '17 at 17:51
Arrow
2,400218
2,400218
add a comment |Â
add a comment |Â
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f395484%2fbash-add-blank-line-to-heredoc-via-variable%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password