BASH-Script Probleme

Dieses Thema im Forum "Mac OS X - Unix & Terminal" wurde erstellt von ChrisF1977, 04.02.2007.

  1. ChrisF1977

    ChrisF1977 Thread Starter MacUser Mitglied

    Beiträge:
    171
    Zustimmungen:
    6
    MacUser seit:
    30.12.2006
    Hi,

    ich habe hier folgendes Script:

    Code:
    echo "Multiconvert Script for Images"
    DEF_PFAD=$PWD
    echo "Pfad zu den Bildern [$DEF_PFAD]"
    
    #Eingabe der Zieldaten
    echo "Dateityp (jpg, tif, gif)"
    read FILETYPE
    
    for i in *$FILETYPE; do
    
                    mogrify -font arial -fill white -draw "text 10,10 '(c) www.forgotten-tears.de'" -font arial -fill black -draw "text 11,11 '\
    (c) www.forgotten-tears.de'" "$i"
    done
    
    Dieses Script läuft unter Linux (BASH) und unter Windows-Cygwin (BASH) ohne Probleme. Nur hier unter OS-X in ner Bash läuft das nicht.
    Beim Ausführen kommt folgender Fehler:

    Code:
    [chris@powermac:/Volumes/HD_2/Pictures/Digital_Archiv/2007-01-21_drf_Harz/web]$ convert_console.sh
    : command not foundnts/Documents/scripte/convert_console.sh: line 1: 
    Multiconvert Script for Images
    ]fad zu den Bildern [/Volumes/HD_2/Pictures/Digital_Archiv/2007-01-21_drf_Harz/web
    : command not foundnts/Documents/scripte/convert_console.sh: line 5: 
    Dateityp (jpg, tif, gif)
    tif
    ': not a valid identifiercuments/scripte/convert_console.sh: line 8: read: `FILETYPE
    : command not foundnts/Documents/scripte/convert_console.sh: line 9: 
    'Users/chris/Documents/Documents/scripte/convert_console.sh: line 10: syntax error near unexpected token `do
    'Users/chris/Documents/Documents/scripte/convert_console.sh: line 10: `for i in *$FILETYPE; do
    [chris@powermac:/Volumes/HD_2/Pictures/Digital_Archiv/2007-01-21_drf_Harz/web]$ 
    
    Wasn das los?

    MfG
    Chris
     
  2. jpv

    jpv MacUser Mitglied

    Beiträge:
    159
    Zustimmungen:
    10
    MacUser seit:
    09.06.2006
    Moin, hast Du möglicherweise nicht Bash sondern eine andere Shell laufen? ich habe das Script mal in eine Textdatei kopiert und nach einem chmod 755 ausgeführt. Dann kommt bei mir tatsächlich nur ganz korrekt: ./test: line 11: mogrify: command not found
    (ich habe mogrify nicht ;) ). Ich nutze 10.4 auf einem Intel ...
    Gruß, jpv
     
  3. ChrisF1977

    ChrisF1977 Thread Starter MacUser Mitglied

    Beiträge:
    171
    Zustimmungen:
    6
    MacUser seit:
    30.12.2006
    Also ist schon die BASH die läuft:

    Code:
    [chris@powermac:~]$ echo $SHELL
    /bin/bash
    [chris@powermac:~]$ 
    
     
  4. oneOeight

    oneOeight MacUser Mitglied

    Beiträge:
    46.808
    Zustimmungen:
    3.633
    MacUser seit:
    23.11.2004
    wenn du nicht explizit eine path setzt solltest du in shell-scripten immer den vollen pfad zu den executables benutzen...
    /bin/echo usw
     
  5. ChrisF1977

    ChrisF1977 Thread Starter MacUser Mitglied

    Beiträge:
    171
    Zustimmungen:
    6
    MacUser seit:
    30.12.2006
    Die Pathvariable ist aber gesetzt:

    Code:
    [chris@powermac:~]$ echo $PATH
    /sw/bin:/sw/sbin:/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin:/usr/X11R6/bin:/opt/local/bin:/opt/local/lib:/Applications/Graphic/ImageMagick/bin/:/Users/chris/Documents/Documents/scripte/
    [chris@powermac:~]$
    Oder was meinst du damit?
     
  6. mapfel

    mapfel MacUser Mitglied

    Beiträge:
    21
    Zustimmungen:
    0
    MacUser seit:
    17.11.2005
    Hi,

    Du must schon angeben welchen Interpreter Du verwenden willst.
    Entweder du gibst an der Kommandozeile "sh mein_script.sh" an, oder Du schreibst den Pfad zum Interpreter in Dein Script (Sheebang Zeile):

    #!/bin/bash

    Muss in der ersten Zeile Deines Scripts stehen. Ich denke mal unter Linux wird per default die Bash benutzt, und unter Windows auch... Unter OS X ist es wahrscheinlich AS.

    Gruss,

    Martin
     
  7. Gerundium

    Gerundium MacUser Mitglied

    Beiträge:
    1.997
    Zustimmungen:
    69
    MacUser seit:
    22.10.2005
    Vermutlich verschluckt er sich an den line breaks von Windows. Speichere das Script im Mac oder Unix Format ab; beispielsweise mit "pico" öffnen und anschließend einfach speichern.
     
  8. dpr

    dpr MacUser Mitglied

    Beiträge:
    519
    Zustimmungen:
    0
    MacUser seit:
    04.04.2006
    Entweder das oder Du hast Spaces in Dateinamen oder Pfaden dorthin und das Quoting im Script stimmt noch nicht.

    Sorry, aber volle Pfade sind (Thema Portier- und Wartbarkeit) ein absolutes No-Go.
     
  9. jpv

    jpv MacUser Mitglied

    Beiträge:
    159
    Zustimmungen:
    10
    MacUser seit:
    09.06.2006
    So, jetzt habe ich auch den Link wiedergefunden, den ich noch hinzufügen wollte: Bash Commands MAN Pages

    Dort gibts auch einen Link auf die MacOSX tcsh Shell
     
  10. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    Sorry, aber relative Pfade sind in Hinblick auf Sicherheit ein absolutes No-Go.
    Im harmlosesten Fall wird anstelle des gewünschten Befehls (z. B. /usr/bin/find) ein Ersatz (z.B. fink /sw/bin/find) ausgeführt, der andere Optionen verwendet und deswegen nicht das gewünschte Ergebnis liefert. Die ungünstigeren Fälle dürft Ihr Euch selbst ausmalen.
     
Die Seite wird geladen...

Diese Seite empfehlen