[英]shell variable expansion inside a bash string
為什么以下腳本為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;
您似乎將bash變量視為可以通過引用傳遞的對象。 但它不是那樣的。
當你將變量cem_ip
和cem_port
成一個字符串並將其保存在變量DHCPDCONF
。 這些變量的值(空字符串)在那個時刻按原樣使用。
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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.