Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
xris
- Beiträge: 75
- Registriert: 11.11.2003 14:40:36
- Wohnort: Antibes (Frankreich)
-
Kontaktdaten:
Beitrag
von xris » 07.01.2005 19:24:20
Hallo zusammen,
warum funktioniert dieses script nicht?
Code: Alles auswählen
ls | while read v
do
echo $v
len='expr length $v'
echo $len
done
Wäre toll, wenn mir damit die Länge der jeweiligen Zeile angezeigt würde.
Bin leider totaler Shellprogrammierung-Anfänger. (das sind nur erste Gehversuche) Ich würde gerne alle Dateien, die die Endung "vlc" haben rausfiltern und dann ein Programm aufrufen, das als Parameter diese Datei bekommt und zusätzlich den Namen der selben Datei mit anderer Dateiendung. (ist wohl noch ein längerer Weg dorthin)
Grüße, Christian
-
peschmae
- Beiträge: 4844
- Registriert: 07.01.2003 12:50:33
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: nirgendwo im irgendwo
Beitrag
von peschmae » 07.01.2005 21:14:33
len='expr length $v'
entweder solche Hochkommata:
len=`expr length $v`
oder aber auch
len=$(expr length $v)
Ob das alles war kann ich jetzt gerade nicht sagen, bin @Windows *duck*
MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy
-
xris
- Beiträge: 75
- Registriert: 11.11.2003 14:40:36
- Wohnort: Antibes (Frankreich)
-
Kontaktdaten:
Beitrag
von xris » 08.01.2005 14:58:43
hi!
danke erstmal, aber ich erhalte auch nach deinen Umformungen die Meldung:
expr: syntax error
warum ist das so?
Grüße, Christian
-
peschmae
- Beiträge: 4844
- Registriert: 07.01.2003 12:50:33
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: nirgendwo im irgendwo
Beitrag
von peschmae » 08.01.2005 19:26:49
Ich nicht
Code: Alles auswählen
peschmae@thinkpad:~$ ls | while read v; do echo -n $v " "; len=`expr length $v`; echo $len; done
bash 4
Desktop 7
develop 7
Bist du sicher dass du nicht irgendwo was vertippt hast? Am besten 1:1 rüberkopieren
MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy
-
mistersixt
- Beiträge: 6601
- Registriert: 24.09.2003 14:33:25
- Lizenz eigener Beiträge: GNU Free Documentation License
Beitrag
von mistersixt » 08.01.2005 21:25:09
Vielleicht hast Du auch eine andere Shell ...
Gruss, mistersixt.
--
System: Debian Bookworm, 6.11.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 3.8 Ghz., Radeon RX 5700 XT, 32 GB Ram, XFCE
-
peschmae
- Beiträge: 4844
- Registriert: 07.01.2003 12:50:33
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: nirgendwo im irgendwo
Beitrag
von peschmae » 08.01.2005 22:04:36
Möglich. Aber expr ist ja ein externes Programm. Da sollten eigentlich keine Probleme auftreten - und die ` ` funktionieren (im Gegensatz zu dem $()) nach meinen Erfahrungen auch fast überall.
Naja, auf jeden fall hab ich ne Bash 3.
MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy
-
gms
- Beiträge: 7798
- Registriert: 26.11.2004 20:08:38
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von gms » 08.01.2005 22:34:45
xris hat geschrieben:Ich würde gerne alle Dateien, die die Endung "vlc" haben rausfiltern und dann ein Programm aufrufen, das als Parameter diese Datei bekommt und zusätzlich den Namen der selben Datei mit anderer Dateiendung.
etwa so:
Code: Alles auswählen
#!/bin/sh
OLDEXT=.vlc
NEWEXT=.tmp
for inputfile in `find -name "*$OLDEXT"`; do
outputfile="${inputfile:0:${#inputfile}-4}$NEWEXT"
echo $inputfile $outputfile
done
-
xris
- Beiträge: 75
- Registriert: 11.11.2003 14:40:36
- Wohnort: Antibes (Frankreich)
-
Kontaktdaten:
Beitrag
von xris » 09.01.2005 21:04:54
hat doch noch funktioniert!
Vielen Dank zusammen, alle Fragen sind damit beantwortet.
lg, Christian