Re: OT: bash () bei variablen
Markus Wagner <[email protected]>
| Newsgroups | gmane.linux.gentoo.user.german |
|---|---|
| Message-ID | <[email protected]> |
Hi Jens,
${ip_neu[0]} kann nicht klappen, da ip_neu nur ein String ist.
Hier ein kurzes Beispiel:
---------------
#!/bin/bash
cat > e << EOF
123 456
789
EOF
ip_neu=`cat e`
ip=(${ip_neu})
echo $ip_neu
echo ${ip}
echo ${ip[0]}
echo ${ip[1]}
----------------
liefert:
----------------
123 456 789
123
123
456
----------------
Soweit ich die bash-internals verstanden habe, wird bei der Erzeugung
des Arrays "ip" der IFS als Trennsymbol berücksichtigt. Als Konvention
für die Dereferenzierung von ip wird ohne Index stets der erste Eintrag
zurückgeliefert - angelehnt an Dereferenzierung von Arrays in C...
Cheers,
Markus
On 08.01.13 00:05, jens wefer wrote:
> Am Mon, 07 Jan 2013 07:22:25 +0100
> schrieb Florian Philipp <[email protected]>:
>
>> Am 07.01.2013 02:27, schrieb jens wefer:
>>>
>>> [...]
>>>
>>
>> `ip=($ip_neu)` erzeugt ein Array ip. `$ip` gibt dir den ersten
>> Eintrag, also genauso wie `${ip[0]}`. Weil du `$ip_neu` nicht escaped
>> hast (`ip=("$ip_neu")`), ist jeder Eintrag whitespace-terminiert.
>>
>> --
>> Florian
>
> echo ${#ip_neu[@]} gibt 1 aus, also nur 1 element
> ip=${ip_neu[0]} gibt mir alles im test 1219 zeichen
> ip=($ip_neu) gibt 1.ip (getrennt durch space zur 2.
> so wie ich dich verstanden hab muesste ${ip_neu[0]} mir auch doie erste
> ip geben, tut es aber nicht.
>
> bye, jens.
>