Manipuler la chaîne en script shell

J’écris un script shell dans un but précis. J’ai une variable de la forme –

var1 = "policy=set policy" 

Maintenant, je dois manipuler la variable var pour obtenir la chaîne après index = . C’est-à-dire que je devrais “définir la politique”. J’ai aussi besoin de cela pour beaucoup d’autres variables où la valeur de “=” n’est pas constante. Comme

 var2 = "bgroup = set bgroup port" var3 = "utm = set security utm" 

Pouvez-vous me donner une idée de comment le faire, s’il vous plaît?

 ${var#*=} 

supprime la correspondance la plus courte de *= de la gauche. Notez que ceci n’est pas en place: si vous voulez enregistrer le résultat, vous devrez stocker le résultat dans une variable.

Sur une note de côté, c’est pour bash. AFAIK ça marche aussi pour ksh et zsh, mais pas csh ou tcsh.

Autres moyens qui ne dépendent pas de votre shell.

 $ var1="policy=set policy" $ echo $var1 | awk '{sub(/.[^=]*=/,"")}1' set policy $ echo $var1 | cut -d= -f2- set policy $ echo $var1 | ruby -e 'puts gets.split(/=/,2)[1]' set policy $ echo $var1 | sed 's/.[^=]*=//' set policy