2016-05-04 7 views
0

Ich habe ein seltsames Problem mit Bash-Skripten.Verkettung von Strings innerhalb von Funktionen

Ich habe zwei Skripts: vlan_menu und das andere network_menu. network_menu Quellen vlan_menu und ruft configure_v() auf.

Innen vlan_menu, ich dies tun:

function configure_v() { 
    TAG_V=66 
    str="team0." 
    newtag="$(echo ${str}${TAG_V})" 
    ${SCRIPTS}/system_config -e ${newtag} ... 
    echo ${newtag} >&2 
} 

wenn ich vlan_menu und drucken den Wert von $ {} NEWTAG laufen, Isee: "team0.66" das ist, was ich sehen will.

network_menu:

source vlan_menu 
configure_v; 

Als ich network_menu, der Ausgang des Echos laufen soll: "team0 66"

Warum passiert das das? Bitte helfen.

+0

Ihr Fehler nicht aus dem Snippet Sie gebucht haben. Wenn zwischen 'source vlan_menu' und' configure_v' ein Code dazwischen liegt, sollte dieser auch gepostet werden. (Siehe die Antwort, warum die Verwendung von * command-substitution * mit 'echo' zum Zuweisen einer verketteten Zeichenkette falsch ist - naja, zumindest völlig unnötig) –

Antwort

2

Sie sollten den einfacheren Ausdruck verwenden:

newtag="${str}${TAG_V}" 
+0

Die Anführungszeichen und geschweiften Klammern sind ebenfalls optional. 'newtag = $ str $ TAG_V' ist äquivalent. –

+0

Stimmt, aber ich sehe nicht, wie das das Problem des OP verursacht. –

Verwandte Themen