J'ai sauvé une valeur par commande shell: Par exemple:Shell: Comment remplacer quelque chose d'un texte avec la valeur variable enregistrée
timeoutvalue=`echo "timeout=2.0"`
Et je dois grep la valeur du délai d'attente d'un autre texte, et remplacez-le par cette valeur timeout. Par exemple, le texte est egtest:
<host ip="255.255.255.0" name="testhost" description="hostfortest" connection="xmlrpc" timeout=4.0/>
Je veux grep la valeur du délai d'attente du texte ci-dessus et remplacer la valeur de timeout=4.0
par timeout=2.0
(la valeur I enregistrée en tant que variables par commande shell).
Mon problème est: (1) pour un test simple, je veux remplacer la valeur de timeout = 4.0 par $ timeoutvalue. Donc, ma commande est:
sed 's/timeout=4.0/$timeoutvalue/g' egtext
.
Mais il semble que le texte devient:
<host ip="255.255.255.0" name="testhost" description="hostfortest" connection="xmlrpc" $timeoutvalue/>
Quelqu'un pourrait me dire pourquoi il est faux?
(2) Pour ce problème, je dois d'abord grep timeout=4.0
du texte, et remplacer la valeur 4.0
par la valeur de la variable enregistrée (dans mon exemple: 2.0). Je pensais mais je ne sais pas quelle commande utiliser pour réaliser ceci (awk? Sed?) Parce que le dépôt du texte n'est pas certain, (par exemple, dans ce texte, le délai d'expiration est $5
, mais peut-être dans un autre texte, il peut être changé en $6
). Je veux dire, il peut être changé en:
<host ip="255.255.255.0" name="testhost" description="hostfortest" connection="xmlrpc" type="onebox" timeout=4.0/>
Quelqu'un pourrait-il m'aider avec ceci?
, merci beaucoup pour votre réponse. Il semble que je n'ai pas encore pleinement reconnu la différence entre devis simple et devis double. Merci. – zhaojing