关于curl:在Bash中将输出分配给变量

Assign output to variable in Bash

我尝试将curl的输出赋给这样一个变量:

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

但是,当我运行脚本时,会发生以下情况:

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

如何正确地将输出输入到$IP中?


在shell中,您不会将$放在要分配的变量前面。只有在引用变量时才使用$IP。

1
2
3
4
5
6
7
#!/bin/bash

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

echo"$IP"

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


与更复杂的事情一样…从实例中获取EC2实例区域。

1
2
3
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