[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bash-Scripting



Michelle Konzack <linux4michelle@freenet.de> writes:

> ich versuche gerade folgendes:
>
> eine Datei:
>
> # album.alb
> T1=text1
> T2=text2
> T3=text3
>
> ein Script:
> #!/bin/bash
> source album_001.alb
> count=0
> while [ $count -lt 17 ] ; do
>     let count=count+1
>     SONG=T$count
>     echo $SONG
> done
>
> Also die Schleife funktioniert... - Nur nicht die Zeile "SONG=T$count"
> Die BASH sagt mir jedesmal:
>
> ./script: =T1: command not found

Bist du sicher, dass du uns oben das richtige Skript gezeigt hast?
Das wirft nämlich keinen Fehler.  Jedenfalls nicht den von dir
genannten.  Aber die erste Zeile muss "source album.alb" heißen.  Es
wäre nicht schlecht gewesen, wenn du das Gepostete auch getestet
hättest, statt uns raten zu lassen.

Dein Skript gibt aus:

T1
T2
[... usw., bis:]
T17

> Also ich gehe mal davon aus, das $count von einem arithmetischen Wert 
> in eine Zeichenkette umgewandelt werden muß. (richtig ?) 

Nein.  Die Shell kennt nur Strings. (Es gibt zwar ein
"integer"-Attribut, aber das ändert daran nichts - man braucht es auch
nicht unbedingt zu kennen.)

Ich nehme aber an, Du wolltest

text1
text2
text3

als Ergebnis.  Du kannst dazu zwar Arrays nehmen wie in einem anderen
Posting vorgeschlagen, ich würde aber auf kein unportables
bash-Konstrukt ausweichen, solange es nicht nötig ist.  Mache aus

  SONG=T$count

ein

  eval SONG=\$T$count

Aber - wie gesagt - geraten, was das gewünschte Ergebnis anbelangt.


HTH,

 Heike



Reply to: