Forum: PC-Programmierung bash-Frage for-Schleife und Indizes


von Rainer U. (r-u)


Lesenswert?

Liebe alle,

ich habe leider zu viel von bash vergessen.. Ich meine, es gab mal 
etwas, wo man irgendwie elegant in einer Schleife die Aufrufe mitzählen 
konnte.

Beispiel: Ich habe eine Trefferliste von Dateinamen, und will alle 
löschen bis auf den ersten "t" - wir mach ich das elegant?
1
#! /bin/bash
2
Treffer=$(find .)  # nur damit etwas drin steht zum Veranschaulichen
3
4
IFS=$'\n'
5
for t in $Treffer
6
do
7
  echo $t
8
done

von Rolf M. (rmagnus)


Lesenswert?

Speziell was für die for-Schleife wäre mir nicht bekannt, aber man kann 
mit bash einfache Arithmetik machen:
1
x=1
2
x=$[x+1] # oder auch let x++
3
echo $x

: Bearbeitet durch User
von Rainer U. (r-u)


Lesenswert?

Ja ok, das geht.
Vielleicht täusche ich mich auch, aber wir war so, als ob man irgendwie 
an das erste oder letzte Element kommen konnte.. naja so geht's 
jedenfalls

von Alexander S. (alesi)


Lesenswert?

Rainer U. schrieb:
> Beispiel: Ich habe eine Trefferliste von Dateinamen, und will alle
> löschen bis auf den ersten "t" - wir mach ich das elegant?

Ein Möglichkeit wäre die Positionsparameter mit den Dateinamen zu 
belegen:
1
$> touch a
2
$> touch b
3
$> touch c
4
$> set -- *
5
$> echo ${@:2}
6
$> b c

von Alexander S. (alesi)


Lesenswert?

Wenn die Positionsparameter nicht überschrieben werden sollen, geht 
natürlich auch ein array:
1
$> touch a
2
$> touch b
3
$> touch c
4
$> array=($(ls))
5
$> echo ${array[@]:1}
6
$> b c

von LOL (Gast)


Lesenswert?

Arrays sind nett:
1
#!/bin/bash
2
3
OLDIFS=$IFS
4
IFS=$'\n'
5
RESULTS=( $(find /tmp) )
6
IFS=$OLDIFS
7
8
FIRST="${RESULTS[0]}"
9
10
echo "FIRST=$FIRST"
11
echo "all RESULTS=""${RESULTS[@]}"

von rbx (Gast)


Lesenswert?

So grob braucht man wohl so Elemente wie head oder tail, oder/und einen 
Zähler der mitzählt oder/und auch eine Sortierhilfe, dann kann man z.B. 
die kleinste oder die größte Datei behalten/löschen, oder eben die 
letzte, bzw. die neueste oder die älteste.

( https://wiki.ubuntuusers.de/wc/ )

von Rainer U. (r-u)


Lesenswert?

Ja, ich glaube diese Array-Schreibweise war's! Vielen Dank, werde ich 
probieren.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.