web-dev-qa-db-ja.com

Bashの変数に出力を割り当てる

私はcURLの出力を次のように変数に割り当てようとしています:

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

ただし、スクリプトを実行すると、次のことが起こります。

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

どうすれば出力を$IPに正しく取得できますか?

135
Alex Bliskovsky

シェルでは、割り当てる変数の前に$を付けないでください。変数を参照する場合にのみ、$ IPを使用します。

#!/bin/bash

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

echo "$IP"

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

より複雑なものでも同じです...インスタンス内から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
19
Kostas Demiris