1 |
Hi Jens, |
2 |
|
3 |
${ip_neu[0]} kann nicht klappen, da ip_neu nur ein String ist. |
4 |
Hier ein kurzes Beispiel: |
5 |
--------------- |
6 |
#!/bin/bash |
7 |
cat > e << EOF |
8 |
123 456 |
9 |
789 |
10 |
EOF |
11 |
ip_neu=`cat e` |
12 |
|
13 |
ip=(${ip_neu}) |
14 |
echo $ip_neu |
15 |
echo ${ip} |
16 |
echo ${ip[0]} |
17 |
echo ${ip[1]} |
18 |
---------------- |
19 |
liefert: |
20 |
---------------- |
21 |
123 456 789 |
22 |
123 |
23 |
123 |
24 |
456 |
25 |
---------------- |
26 |
|
27 |
Soweit ich die bash-internals verstanden habe, wird bei der Erzeugung |
28 |
des Arrays "ip" der IFS als Trennsymbol berücksichtigt. Als Konvention |
29 |
für die Dereferenzierung von ip wird ohne Index stets der erste Eintrag |
30 |
zurückgeliefert - angelehnt an Dereferenzierung von Arrays in C... |
31 |
|
32 |
Cheers, |
33 |
|
34 |
Markus |
35 |
|
36 |
On 08.01.13 00:05, jens wefer wrote: |
37 |
> Am Mon, 07 Jan 2013 07:22:25 +0100 |
38 |
> schrieb Florian Philipp <lists@×××××××××××.net>: |
39 |
> |
40 |
>> Am 07.01.2013 02:27, schrieb jens wefer: |
41 |
>>> |
42 |
>>> [...] |
43 |
>>> |
44 |
>> |
45 |
>> `ip=($ip_neu)` erzeugt ein Array ip. `$ip` gibt dir den ersten |
46 |
>> Eintrag, also genauso wie `${ip[0]}`. Weil du `$ip_neu` nicht escaped |
47 |
>> hast (`ip=("$ip_neu")`), ist jeder Eintrag whitespace-terminiert. |
48 |
>> |
49 |
>> -- |
50 |
>> Florian |
51 |
> |
52 |
> echo ${#ip_neu[@]} gibt 1 aus, also nur 1 element |
53 |
> ip=${ip_neu[0]} gibt mir alles im test 1219 zeichen |
54 |
> ip=($ip_neu) gibt 1.ip (getrennt durch space zur 2. |
55 |
> so wie ich dich verstanden hab muesste ${ip_neu[0]} mir auch doie erste |
56 |
> ip geben, tut es aber nicht. |
57 |
> |
58 |
> bye, jens. |
59 |
> |