2017-01-09 60 views
1

我想要做的是为了不将一个变量硬编码为一个字符串,我想让它更具动态性。如何保存一个变量并将其导出到bash中

我想要做这样的事情:

export SERVER_IP=45.100.1.100 #this works but it is hardcoding 

IP = short myip.opendns.com @resolver1.opendns.com #grabs IP and should save it into a variable 
export SERVER_IP = IP #exports IP to an environmental variable 

如何使这一实际工作?谢谢。

+1

'=':'IP ='周围没有空格。在''export''你有一个'$'丢失(为了安全起见):'export SERVER_IP =“$ IP”' – cdarke

+0

请看看:http://www.shellcheck.net/ – Cyrus

回答

1

你的意思是使用的命令是(大概):

dig +short myip.opendns.com @resolver1.opendns.com 

现在,保存命令的STDOUT在一个变量,你需要命令替换,$()

ip=$(dig +short myip.opendns.com @resolver1.opendns.com) 

也有在bash的变量声明中不得有=左右的任何空格。

请注意,请勿在bash中为变量名使用全部大写字母,以防止意外超出任何具有相同名称的环境变量。

+0

所以我做了这样的事情:导出server_ip = $(dig + short myip.opendns.com @ resolver1.opendns.com)但我尝试运行它仍然得到: root @ vvv:/ srv/www/deploy#server_ip server_ip:command not found – funguy

+1

@funguy变量不是一个命令,你可以将它扩展为仅值。提示:'echo“$ server_ip”' – heemayl

+0

明白了。谢谢。 – funguy

相关问题