2012-10-12 5 views
1

J'essaye de changer la valeur de malloc pour dire 1234m via un script bash mais je ne vois pas les changements. Je suppose que c'est un problème avec mon regex, quelqu'un peut-il voir ce que j'ai fait de façon incorrecte?Script Bash pour modifier la configuration en utilisant sed

Chaîne

DAEMON_OPTS="-a :6081 \ 
      -T localhost:6082 \ 
      -f /etc/varnish/default.vcl \ 
      -S /etc/varnish/secret \ 
      -s malloc,256m" 

code

# get the memory allocation 
echo "Enter the memory allocation" 
read malloc 

# update the default config 
sed -ie 's/malloc,.*[0-9m]$/malloc,'$malloc'/gI' /etc/default/varnish 

Répondre

3

Il vous manque un " avant la $ dans le motif sed. A propos, votre pattern fonctionne, mais d'une façon différente que vous ne le pensiez: la classe [0-9m] correspond à un seul caractère, m dans ce cas. Le numéro est suivi par .*. Un meilleur motif pourrait être malloc,[0-9]\+m"$.

+0

Cela a fonctionné avec brio, merci! Je ne peux pas croire que j'ai manqué le m "à la fin de la ligne! – gazzwi86

1

Essayez cette commande sed:

Sur Mac:

sed -E 's/malloc,[0-9]+m/malloc,'$malloc'/' /etc/default/varnish 

ou sur Linux:

sed -r 's/malloc,[0-9]+m/malloc,'$malloc'/' /etc/default/varnish 
0

La ligne sed suivante a fonctionné pour moi, enfermant dans " plutôt que ':

sed -ie "s/malloc,[0-9]\+m$/malloc,$malloc/gI" /etc/default/varnish 
Questions connexes