ERLEDIGT
NEIN
NEIN
ANTWORTEN
12
12
ZUGRIFFE
1112
1112
EMPFEHLEN
-
Hallo erstmals
Ich lerne gerade in der Schule Shell Programmierung, und kenne mich dementsprechend nicht so gut aus. Ich habe 2 Beispiele aufgetragen bekommen und ich hoffe ihr könnt mir helfen.
Bsp1.: hab ich schon gelöst, aber ich bekomm den Fehler " [0: command not found" dieser Fehler kommt für 2 Zeilen und zwar 7 und 12. Hier is der Code
////////////////////////
#!bin/bash
a=$#
e="0"
z="0"
if["$z" - lt "2"]; then
echo zu wenige parameter
exit 1
fi
while ["$z" -lt "$a"]; do
e='expr $e $1'
shift 1
z='expr $z 1'
done
echo $e
/////////////////////////////////////
Bsp2.:
offiziele Angabe:
ms[path1 path2..]
user loginname:
x directories mit xx Bytes
y files mit yy Bytes
Fehler: Pfad path existiert nicht
Meine Annahme:
Anders gesagt ich soll ein SKript schreiben dass die Größe von allen Dateien die in Verzeichnisse enthalten sind ausgeben, wobei ich Ordnernamen als Argument übergebe.
Und die Größe der Verzeichnisse
kann mir jemand helfen vielleicht beraten oder es schnell schreiben
is ja angeblich nicht viel
und nochwas zum ersten ich test den skript so aus in putty: ./num.sh
num.sh die name der shell
ich hoffe ihr könnt mir helfen danke schon mal im voraus
-
21.04.06 00:25 #2
- Registriert seit
- Dec 2001
- Ort
- Hannover
- Beiträge
- 4.234
Zeile 7 sollte nur mit den fehlenden doppelten Anführungsstrichen Probleme gehabt haben.
In Zeile 12 (und 14) solltest Du statt den einzelnen Anführungstrichen den sogenannten Backtick verwenden. Theoretisch sollte das Script dann laufen (habe nicht grossartig überprüft)
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
#!bin/bash a=$# e="0" z="0" if["$z" - lt "2"]; then echo "zu wenige parameter" exit 1 fi while ["$z" -lt "$a"]; do e=`expr $e $1` shift 1 z=`expr $z 1` done echo $e
Copy for free - Yet another page for free software with soures:- BitUnlocker (Automatic unlock multiple Bitlocker secured drives - if you use the same password)
- W7 ScrollZoom (Use Windows 7 zoom tool through your mouse wheel)
- AppStarter (Somewhat like PortableApps launcher)
- QuakeConsole (Show/Hide windows console with your tilde key)
- BetterFileRenamer (Simple file renamer that adds date and version)
-
Halli hallo

hi soweit ich weiß musst du beim ersten Beispiel das so machen
Code :1
echo "zu wenig parameter"
Beim 2. Script würde ich es so machen das ich per list (ls -lS = Listet alle Dateien in dem Ordner nach ihrer Größe geordnet auf) alles anzeigen lasse. Weiß ja jetzt nicht genau was du machen musst. Ob da jetzt nur die größen stehen sollen oder so.
Ich hoffe ich konnte dir, wenn auch beschränkt, ein wenig weiterhelfen
Geändert von DonMarkeZ (21.04.06 um 00:49 Uhr)
Hier könnte Ihre Werbung stehen !
-
21.04.06 11:14 #4
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
@RedoXXX: Verwende doch bitte die Code Tags. (Da erscheinen dann z.B. auch Zeilennummern so das man gleich sieht welche Zeile du meinst).
@Neurodeamon: Meiner Meinung nach sind das in Zeile 12 und 14 umgekehrte einfache Anführungszeichen - sollte also richtig sein.
@DonMarkeZ: Nein, das ist nicht der Fehler. Die Ausgabe funktioniert so oder so (allerdings wird bei der Version von RedoXXX zwischen den Worten nur ein einzelnes Zeichen ausgegeben (auch wenn mehrere Leerzeichen dazwischen stehen) - nämlich das erste Zeichen was in der Variablen IFS drin steht, bei dir immer genau das was zwischen den Anführungszeichen steht.
Die Fehler sind in der Zeile darüber. Das if muß von der eckigen Klammer durch ein Leerzeichen getrennt sein. Der kleiner-als Operator heißt -lt (da darf kein Leerzeichen zwischen dem Minus und dem lt sein. Es muß allerdings mind. ein Leerzeichen zwischen den eckigen Klammern und dem Inhalt der Klammern sein. Das Gleiche gilt natürlich auch für die Bedingung bei der while-Schleife; nur das Semikolon darf direkt hinter der schließenden Klammer kommen.
GrußCode bash:1 2 3 4 5 6 7 8 9
#!/bin/bash a=$# e="0" z="0" if [ "$a" -lt "2" ]; then echo "zu wenige parameter" exit 1 fi
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Ein Ordner ist so 0 Byte groß !
Zitat von RedoXXX
Das mit den Dateien (sucht auch in Unterordnern):
find findet alle Dateien, stat -c "%s" (bzw. filesize) gibt die Dateigröße in Bytes aus.Code :1 2 3 4 5 6 7 8
#!/bin/bash size=0; tmp=0; for i in `find`; do tmp=`stat -c "%s" $i` size=`expr $size + $tmp` done echo $size
Mit expr addiere ich das ganze zusammen
EDIT: Musst du natürlich noch bearbeiten.
und nochwas zum ersten ich test den skript so aus in putty:
num.sh die name der shell
Ey, geh zu lade um den eck und kaufen dich tüte deutsch für 3 Geld 80, hat mich auch gehelft
Geändert von Aiju (21.04.06 um 11:36 Uhr)
-
Zitat von Aiju

haha jaja bleib cool junge ich war in eile musste den programm am freitag zeigen, unter druck schreibt man sowas, um diesen sachverhalt zu ergründen besuche extra für dich ein seelenklempner, ergebnisse teile ich dir dann mit
(das mit seelenklempner is nur scherz, mach ich nicht wirklich ich wollt ein satz schreiben wo ich sehr deutsch klinge
)
-
Ich wollte mich noch bei allen bedanken für die antworten, falls ich probleme hab, werdet ihr dann wahrscheinlich wieder von mir hören. Ich teste alles Morgen oder Sonntag.
Danke nochmals
-
ja hallo ich bins nochmal, ich bin noch immer bei bsp1, ich hab meine die fehler die ich hatte korregiert und jetzt bekomm ich eine neue fehlermeldung. und zwar:
./num.sh: line 12: [: expr $z + 1: integer expression expected
und bei echo gibt er statt der zahl das hier raus:
expr $e + $1
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#!bin/bash a=$# e="0" z="0" if[ "$z" - lt "2" ]; then echo "zu wenige parameter" exit 1 fi while [ "$z" -lt "$a" ]; do e='expr $e $1' shift 1 z='expr $z 1' done echo $e
-
Das sind Accent-Graves (oder auch Backticks)Code :
1
e=`expr $e + $1`
und KEINE EINFACHEN ANFÜHRUNGSZEICHEN
Die machst du (auf der deutschen Tastatur) mit Shift und der Taste rechts neben
EDIT: Unter Windoof muss man danach noch Leertaste drückenCode :1 2
? ß \
Geändert von Aiju (22.04.06 um 22:24 Uhr)
-
WOW Danke BSP1 geht super



danke wirklich, morgen versuche ich bsp2
-
23.04.06 20:33 #11
- Registriert seit
- Dec 2001
- Ort
- Hannover
- Beiträge
- 4.234
@Aiju:Das sind Accent-Graves (oder auch Backticks)
und KEINE EINFACHEN ANFÜHRUNGSZEICHEN
Danke für die Schützenhilfe. Ich vergesse das es nicht immer reicht auf die Fehler hinzuweisen und die korrekte Bezeichnung zu nennen. Manchmal ist eine Schritt-für-schritt-Anleitung erforderlich.
(Ich hätte aber nicht erwartet das mein Hinweis auf die Backticks komplett ignoriert wird)
Copy for free - Yet another page for free software with soures:- BitUnlocker (Automatic unlock multiple Bitlocker secured drives - if you use the same password)
- W7 ScrollZoom (Use Windows 7 zoom tool through your mouse wheel)
- AppStarter (Somewhat like PortableApps launcher)
- QuakeConsole (Show/Hide windows console with your tilde key)
- BetterFileRenamer (Simple file renamer that adds date and version)
-
Manche Leute (PC-Anfänger) verwechseln die Accent-Aigu(´) Accent-Grave(`) Einfache Afz.(') und dopellte Afz. (")
Zitat von Neurodeamon
Ich seh immer häufiger:
´Huhu hier bin ich´, sagte er.
Erlaubt sind(meiner Meinung)
"Huhu hier bin ich" und ,,Huhu hier bin ich" (So mach ich das häufig, dann meckert kein Deutsch-Besserwisser)
-





prog zwei auch perfekt danke
Ähnliche Themen
-
Shell Programmierung Hilfe zum Test
Von RedoXXX im Forum Linux & UnixAntworten: 2Letzter Beitrag: 18.05.06, 21:32 -
Shell-Programmierung
Von themok im Forum Linux & UnixAntworten: 6Letzter Beitrag: 12.04.06, 22:53 -
shell programmierung
Von DiveSurfer im Forum Linux & UnixAntworten: 5Letzter Beitrag: 30.12.05, 09:19 -
Shell programmierung / Arrays?
Von jack-daniels-net im Forum Linux & UnixAntworten: 20Letzter Beitrag: 05.10.04, 17:06





Zitieren
Login





