Dlaczego ten skrypt bash
ssh $SERVER bash <<EOF
sed -i "s/database_name: [^ ]*/database_name: kartable_$ME" $PARAM_FILE
exit
EOF
wyjście ->
sed: -e expression #1, char 53: unterminated `s' command
s
Polecenie sed
, wykorzystuje specyficzną składnię:
s/AAAA/BBBB/options
gdzie s
jest polecenie podstawienia, AAAA
to wyrażenie regularne, które chcesz zastąpić, BBBB
to, z czym chcesz go zastąpić, i options
dowolna z opcji polecenia podstawienia, takich jak global ( g
) lub ignore case ( i
).
W konkretnym przypadku brakowało ostatniego slash /
, jeśli go dodasz, sed
będzie działać dobrze:
➜ ~ sed 's/database_name: [^ ]*/database_name: kartable_$ME/'
database_name: something
database_name: kartable_$ME
info sed 'The "s" Command'
zawiera pełny opis i użycie polecenia s.
Brakuje /
na końcu.
sed -i "s/database_name: [^ ]*/database_name: kartable_$ME/" $PARAM_FILE
/
nieg
,g
jest globalny, które nie mogą być pożądane.