在Bash中将输出分配给变量

时间:2012-01-05 04:27:08

标签: bash curl

我正在尝试将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

2 个答案:

答案 0 :(得分:241)

在shell中,你不要在你指定的变量前放一个$。您在引用变量时只使用$ IP。

#!/bin/bash

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

echo "$IP"

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

答案 1 :(得分:19)

与更复杂的东西相同......从实例中获取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