Warum dieses Bash-Skript?
ssh $SERVER bash <<EOF
sed -i "s/database_name: [^ ]*/database_name: kartable_$ME" $PARAM_FILE
exit
EOF
Ausgabe ->
sed: -e expression #1, char 53: unterminated `s' command
Der s
Befehl in sed
verwendet eine bestimmte Syntax:
s/AAAA/BBBB/options
Dabei s
handelt es sich um den Ersetzungsbefehl, AAAA
den regulären Ausdruck, den Sie ersetzen BBBB
möchten, und options
um eine der Optionen des Ersetzungsbefehls, z. B. global ( g
) oder case ( i
) ignorieren .
In Ihrem speziellen Fall hat Ihnen der letzte Schrägstrich gefehlt /
. Wenn Sie ihn hinzufügen, sed
funktioniert er einwandfrei:
➜ ~ sed 's/database_name: [^ ]*/database_name: kartable_$ME/'
database_name: something
database_name: kartable_$ME
info sed 'The "s" Command'
Enthält die vollständige Beschreibung und Verwendung des Befehls s.
/
Am Ende fehlt .
sed -i "s/database_name: [^ ]*/database_name: kartable_$ME/" $PARAM_FILE
/
nicht dasg
,g
was für global vielleicht nicht erwünscht ist.