Why this bash script
ssh $SERVER bash <<EOF
sed -i "s/database_name: [^ ]*/database_name: kartable_$ME" $PARAM_FILE
exit
EOF
output ->
sed: -e expression #1, char 53: unterminated `s' command
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It only takes a minute to sign up.
Sign up to join this communityThe s
command in sed
, uses a specific syntax:
s/AAAA/BBBB/options
where s
is the substitution command, AAAA
is the regex you want to replace, BBBB
is with what you want it to be replaced with and options
is any of the substitution command's options, such as global (g
) or ignore case (i
).
In your specific case, you were missing the final slash /
, if you add it, sed
will work just fine:
➜ ~ sed 's/database_name: [^ ]*/database_name: kartable_$ME/'
database_name: something
database_name: kartable_$ME
info sed 'The "s" Command'
includes the full description and usage of the s command.
Missing /
at the end.
sed -i "s/database_name: [^ ]*/database_name: kartable_$ME/" $PARAM_FILE
/
not the g
, g
is for global which may not be desired.
In my case (an unusual issue) I had a \n in my sed command. When I ran it in Jenkins pipeline or copy-paste it, it turned to be a multi-line command and it failed on this error.
The solution was to escape the backslash