Warum gibt sed "char 53: nicht abgeschlossenes` s'-Kommando "aus?


28

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

Antworten:


38

Der sBefehl in sedverwendet eine bestimmte Syntax:

s/AAAA/BBBB/options

Dabei shandelt es sich um den Ersetzungsbefehl, AAAAden regulären Ausdruck, den Sie ersetzen BBBBmöchten, und optionsum 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, sedfunktioniert 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.


9

/Am Ende fehlt .

sed -i "s/database_name: [^ ]*/database_name: kartable_$ME/" $PARAM_FILE

1
es fehlte das /nicht das g, gwas für global vielleicht nicht erwünscht ist.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.