簡體   English   中英

bash字符串中的shell變量擴展

[英]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_ipcem_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM