为什么下面的脚本为shell变量打印为空 预期的输出是“ encapsulated-options 10.1.42.35:4334”,但输出“ encapsulated-options:;”。 。请指教。
#!/bin/bash
cem_ip=""
cem_port=""
DHCPDCONF="encapsulated-options \"$cem_ip:$cem_port\";";
function print()
{
cem_ip="10.1.42.35";
cem_port=4334;
echo -e "$DHCPDCONF"
return 0;
}
print;
答案 0 :(得分:0)
您似乎将bash变量视为可以通过引用传递的对象。但这不是那样。
在将变量cem_ip
和cem_port
连接到字符串并将其保存到变量时
DHCPDCONF
。这些var的值(空字符串)在那时被照原样使用。
DHCPDCONF
变量现在只是一个字符串,并且不知道它是由其他两个变量组成的。
当您以后更改cem_*
变量的值时,DHCPDCONF
的值不会改变
#!/bin/bash
cem_ip="";
cem_port="";
function encapsulated_options () {
echo "encapsulated-options \"${1}:${2}\";";
}
function print () {
cem_ip="1.2.3.4";
cem_port="5678";
DHCPDCONF=$(encapsulated_options "${cem_ip}" "${cem_port}");
echo -e $DHCPDCONF;
}
print;