tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
12
ZUGRIFFE
1112
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    RedoXXX RedoXXX ist offline Mitglied
    Registriert seit
    Oct 2004
    Beiträge
    13
    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
     

  2. #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)
    .... more to come

  3. #3
    Avatar von DonMarkeZ
    DonMarkeZ DonMarkeZ ist offline Mitglied Silber
    Registriert seit
    Aug 2004
    Ort
    Dortmund
    Beiträge
    94
    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 !

  4. #4
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    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.
    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
    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  5. #5
    Avatar von Aiju
    Aiju Aiju ist offline Mitglied Brokat
    Registriert seit
    Jul 2004
    Beiträge
    268
    Zitat Zitat von RedoXXX
    x directories mit xx Bytes
    Ein Ordner ist so 0 Byte groß !
    Das mit den Dateien (sucht auch in Unterordnern):
    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
    find findet alle Dateien, stat -c "%s" (bzw. filesize) gibt die Dateigröße in Bytes aus.
    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)
     

  6. #6
    RedoXXX RedoXXX ist offline Mitglied
    Registriert seit
    Oct 2004
    Beiträge
    13
    Zitat Zitat von Aiju
    Ein Ordner ist so 0 Byte groß !

    Ey, geh zu lade um den eck und kaufen dich tüte deutsch für 3 Geld 80, hat mich auch gehelft
    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)
     

  7. #7
    RedoXXX RedoXXX ist offline Mitglied
    Registriert seit
    Oct 2004
    Beiträge
    13
    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
     

  8. #8
    RedoXXX RedoXXX ist offline Mitglied
    Registriert seit
    Oct 2004
    Beiträge
    13
    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
     

  9. #9
    Avatar von Aiju
    Aiju Aiju ist offline Mitglied Brokat
    Registriert seit
    Jul 2004
    Beiträge
    268
    Code :
    1
    
    e=`expr $e + $1`
    Das sind Accent-Graves (oder auch Backticks)
    und KEINE EINFACHEN ANFÜHRUNGSZEICHEN
    Die machst du (auf der deutschen Tastatur) mit Shift und der Taste rechts neben
    Code :
    1
    2
    
    ?
    ß \
    EDIT: Unter Windoof muss man danach noch Leertaste drücken
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken Anfänger Shell Programmierung-tastatur.png  
    Geändert von Aiju (22.04.06 um 22:24 Uhr)
     

  10. #10
    RedoXXX RedoXXX ist offline Mitglied
    Registriert seit
    Oct 2004
    Beiträge
    13
    WOW Danke BSP1 geht super danke wirklich, morgen versuche ich bsp2
     

  11. #11
    Registriert seit
    Dec 2001
    Ort
    Hannover
    Beiträge
    4.234
    Das sind Accent-Graves (oder auch Backticks)
    und KEINE EINFACHEN ANFÜHRUNGSZEICHEN
    @Aiju:
    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)
    .... more to come

  12. #12
    Avatar von Aiju
    Aiju Aiju ist offline Mitglied Brokat
    Registriert seit
    Jul 2004
    Beiträge
    268
    Zitat Zitat von Neurodeamon
    @Aiju:
    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)
    Manche Leute (PC-Anfänger) verwechseln die Accent-Aigu(´) Accent-Grave(`) Einfache Afz.(') und dopellte Afz. (")
    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)
     

  13. #13
    RedoXXX RedoXXX ist offline Mitglied
    Registriert seit
    Oct 2004
    Beiträge
    13
    prog zwei auch perfekt danke
     

Ähnliche Themen

  1. Shell Programmierung Hilfe zum Test
    Von RedoXXX im Forum Linux & Unix
    Antworten: 2
    Letzter Beitrag: 18.05.06, 21:32
  2. Shell-Programmierung
    Von themok im Forum Linux & Unix
    Antworten: 6
    Letzter Beitrag: 12.04.06, 22:53
  3. shell programmierung
    Von DiveSurfer im Forum Linux & Unix
    Antworten: 5
    Letzter Beitrag: 30.12.05, 09:19
  4. Shell programmierung / Arrays?
    Von jack-daniels-net im Forum Linux & Unix
    Antworten: 20
    Letzter Beitrag: 05.10.04, 17:06