web-dev-qa-db-fra.com

Affecter la sortie à une variable dans Bash

J'essaie d'assigner la sortie de cURL dans une variable comme ceci:

#!/bin/sh
$IP=`curl automation.whatismyip.com/n09230945.asp`
echo $IP
sed s/IP/$IP/ nsupdate.txt | nsupdate

Cependant, lorsque j'exécute le script, les événements suivants se produisent:

./update.sh: 3: =[my ip address]: not found

Comment puis-je obtenir la sortie dans $IP correctement?

141
Alex Bliskovsky

Dans Shell, vous ne mettez pas de $ devant une variable que vous affectez. Vous utilisez uniquement $ IP lorsque vous faites référence à la variable.

#!/bin/bash

IP=$(curl automation.whatismyip.com/n09230945.asp)

echo "$IP"

sed "s/IP/$IP/" nsupdate.txt | nsupdate
252
ghoti

Idem avec quelque chose de plus complexe ... obtenir la région d'instance ec2 à partir de l'instance.

INSTANCE_REGION=$(curl -s 'http://169.254.169.254/latest/dynamic/instance-identity/document' | python -c "import sys, json; print json.load(sys.stdin)['region']")

echo $INSTANCE_REGION
22
Kostas Demiris