Comment prévenir l'échec sed en combinaison avec apg?

J'écris un script qui installera automatiquement WordPress pour moi de me faciliter la vie, car je dois constamment déployer une installation WordPress.

Cependant, j'essaie de le faire pour que je n'interagisse jamais avec lui, et cela prend mon sommeil.

Pour générer des mots de passe pour des bases de données et d'autres choses, j'utilise apg, Puis utiliser sed Pour remplacer la chaîne avec le mot de passe correct.

Cela ressemble à ceci:

DOMAIN="$2"
DB_NAME_USER="$(echo $DOMAIN | sed -e 's/\.//g')"
DB_PASSWORD="$(apg -a 1 -n 1 -m 64 -d -c cl_seed -E \_\"\'\`\/\\\=)"

sed -i "s/database_name_here/$DB_NAME_USER/g" /srv/"$DOMAIN"/wp-config.php
sed -i "s/username_here/$DB_NAME_USER/g" /srv/"$DOMAIN"/wp-config.php
sed -i "s/password_here/$DB_PASSWORD/g" /srv/"$DOMAIN"/wp-config.php

Le remplacement de la base de données et du nom d'utilisateur fonctionne normalement, mais lors du remplacement du mot de passe, six fois sur dix fois le remplacement n'est pas effectué et

Je reçois quelque chose comme ça:

define ('DB_PASSWORD', 'Ymb {X-dT ~ l5Agg9q561A ^? n

password_here

D; $ U, s> mu *: f7 | BK4? OM # OH> cHgsI9GndW @ ~ SkBQ ');

Concentrez-vous sur le problème. Au lieu de supprimer une partie «password_here» Et remplacez-le par un mot de passe réel, il semble réunir une chaîne au milieu du mot de passe.

Je pensais que cela pourrait être un symbole créé de apg, qui a embauché S. sed, Mais j'ai supprimé beaucoup de mot de passe créé en utilisant -E, Et encore beaucoup.

La même chose se produit avec d'autres remplacements, toujours impliqués apg et sed. Remplacer de telles choses comme

_PASSWORD_HERE_

De temps à autre pour mener au même problème.

Y a-t-il un moyen de contourner cela ou de continuer à essayer de trouver des symboles qui causent des problèmes, puis les ajoutent à la liste d'exceptions apg? Ou peut-être me dire sed Remplacez la ligne entière, pas seulement une chaîne que je veux?

Merci d'avance!
Invité:

Blanche

Confirmation de:

Vous devez éviter

\

,

/

et

&

Symboles dans votre entrée, sinon sed Les agit. Sorte de

DB_PASSWORD=$(echo "$DB_PASSWORD" | sed -e 's/[\/&]/\\&/g')
sed -i "s/password_here/$DB_PASSWORD/g" /srv/"$DOMAIN"/wp-config.php

Doit faire votre entreprise.

Pour répondre aux questions, connectez-vous ou registre