Назначить вывод переменной в Bash
Я пытаюсь назначить вывод cURL в переменную следующим образом:
#!/bin/sh
$IP=`curl automation.whatismyip.com/n09230945.asp`
echo $IP
sed s/IP/$IP/ nsupdate.txt | nsupdate
Однако, когда я запускаю script, происходит следующее:
./update.sh: 3: =[my ip address]: not found
Как я могу получить вывод в $IP
правильно?
Ответы
Ответ 1
В оболочке вы не ставите $перед переменной, которую вы назначаете. Вы используете только $IP, когда ссылаетесь на переменную.
#!/bin/bash
IP=$(curl automation.whatismyip.com/n09230945.asp)
echo "$IP"
sed "s/IP/$IP/" nsupdate.txt | nsupdate
Ответ 2
То же самое с чем-то более сложным... получение области экземпляра ec2 из экземпляра.
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