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.
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.