J'essaie d'utiliser
sed -i -e "s/.*seb.*/ \"$ftp_login_template\"/" $ftp_dir
mais j'obtiens cette erreur:
sed: -e expression #1, char 34: unknown option to `s'
Je ne comprends pas pourquoi puisque cela fonctionne parfaitement:
sed -i -e "s/.*wbspassword.*/ \"wbspassword\": \"$password\",/" $user_conf
Des idées sur ce que je fais mal?
Est-ce que ceci pourrait être le problème? ftp_login_template=\${user}:${password}:24:86::\/var\/lib\/clit.${user}\/downloads:\/bin\/false\"
Le problème vient des barres obliques: votre variable les contient et la dernière commande sera quelque chose comme sed "s/string/path/to/something/g"
, Contenant trop de barres obliques.
Puisque sed
peut prendre n’importe quel caractère comme séparateur, vous pouvez en utiliser un autre qui ne figure pas dans la chaîne de remplacement:
replacement="/my/path"
sed -e "s@pattern@$replacement@"
Notez que ce n’est pas une preuve irréfutable: si la chaîne de remplacement contient plus tard @
, Elle se cassera pour la même raison et toute séquence de barre oblique inversée telle que \1
Sera toujours interprétée conformément aux règles sed.