Bash Shell Strangs ausgeben

AMD_Rulez

Lieutenant
Registriert
Feb. 2010
Beiträge
582
Hallo,

Ich möchte aus einer Datei jeweils den längsten und den kürzesten String Auslesen. Als beispiel nehmen wir die Datei Namen in der verschieden lange Namen gespeichert sind. Jetzt möchte ich per for Schleife alle Namen durchgehen und die passenden aussortieren doch leider fehlt mir die dazugehörige Syntax...

Anfangen sollte es meiner Meinung nach ungefähr so:
For name in 'cat Namen'
Do
...



Weiter komme ich nicht. Ich schreibe alles im vi Editor

Danke schonmal
 
Ganz simple:

Länge eines Strings:
Code:
venompc-linux ~ # export lola=bulana
venompc-linux ~ # echo ${#lola}
6

eine For-Schleife
Code:
for VARIABLE in 1 2 3 4 5 .. N
do
	command1
	command2
	commandN
done
 
Danke das hatte mir gefehlt jetzt klappt's. Jetzt muss ich nur noch gucken wie ich die ganzen Namen Durchfahrten kann
 
Durchfahrten?!? Ähm...

Was willst du denn genau machen?
 
Das ist nicht schwer; du hattest schon fast die Lösung. Nur musst du dein Kommando vom Bash-Interpreter auch ausführen lassen (hier z.B. ls):
Code:
for name in $(ls); do  #bei älteren bash-Versionen auch `ls`
    echo $name
done
 
Die Namen stehen zeilenweise in der Datei? Dann (ohne Tests auf Fehler und mehrere gleichlange) etwa so:
Code:
#!/bin/bash
kurz=100000
lang=0
while read zeile; do
  laenge=${#zeile}
  if [ $laenge -lt $kurz ]; then kurz=$laenge; kurzName="$zeile"; fi
  if [ $laenge -gt $lang ]; then lang=$laenge; langName="$zeile"; fi
done
echo kurz: "$kurzName"
echo lang: "$langName"
Das Programm erwartet die Daten auf der Standardeingabe.
 
Zuletzt bearbeitet:
Zurück
Oben