• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

Linux-Bash-Skript in Mac OS 10.5.7 nutzen?

MoTw

Jonagold
Registriert
01.01.09
Beiträge
23
Hi!

Ich habe ein Bash-Skript für Linux geschrieben, und nun möchte ich es im Mac OS nutzen. Sollte doch eigentlich funktionieren, schließlich ist das Terminal ja auch eine Bourne-Again-Shell, oder?

Naja, jedenfalls habe ich den Code erstmal auf dem Mac als .txt-Datei abgespeichert und dann mit
Code:
chmod +x skript
ausführbar gemacht. Als ich das Skript jedoch mit
Code:
./skript
starten wollte, kam nur "cannot execute binary file!".

Kann ich das Linux-Bash-Skript nicht als Mac-Bash-Skript verwenden?

Ich habe das Skript mal angehängt (als txt)

EDIT: oh Entschuldigung mein Firefox macht Probleme mit Error 400! Das Skript gibts auch hier!

EDIT: Oh mein Gott was ist denn los?????? Naja. Hier der ganze Text:


Code:
function zeichenTr ()
{
        case "$1" in
            "")
                echo -n ""
                ;;
            "a")
                echo -n "03B1"
                ;;
            "b")
                echo -n "03B2"
                ;;
            "g")
                echo -n "03B3"
                ;;
            "d")
                echo -n "03B4"
                ;;
            "e")
                echo -n "03B5"
                ;;
            "z")
                echo -n "03B6"
                ;;
            "h")
                echo -n "03B7"
                ;;
            "q")
                echo -n "03B8"
                ;;
            "i")
                echo -n "03B9"
                ;;
            "k")
                echo -n "03BA"
                ;;
            "l")
                echo -n "03BB"
                ;;
            "m")
                echo -n "03BC"
                ;;
            "n")
                echo -n "03BD"
                ;;
            "x")
                echo -n "03BE"
                ;;
            "o")
                echo -n "03BF"
                ;;
            "p")
                echo -n "03C0"
                ;;
            "r")
                echo -n "03C1"
                ;;
            "s")
                echo -n "03C3"
                ;;
            "j")
                echo -n "03C2"
                ;;
            "t")
                echo -n "03C4"
                ;;
            "u")
                echo -n "03C5"
                ;;
            "f")
                echo -n "03C6"
                ;;
            "c")
                echo -n "03C7"
                ;;
            "y")
                echo -n "03C8"
                ;;
            "w")
                echo -n "03C9"
                ;;
		"A")
                echo -n "0391"
                ;;
            "B")
                echo -n "0392"
                ;;
            "G")
                echo -n "0393"
                ;;
            "D")
                echo -n "0394"
                ;;
            "E")
                echo -n "0395"
                ;;
            "Z")
                echo -n "0396"
                ;;
            "H")
                echo -n "0397"
                ;;
            "Q")
                echo -n "0398"
                ;;
            "I")
                echo -n "0399"
                ;;
            "K")
                echo -n "039A"
                ;;
            "L")
                echo -n "039B"
                ;;
            "M")
                echo -n "039C"
                ;;
            "N")
                echo -n "039D"
                ;;
            "X")
                echo -n "039E"
                ;;
            "O")
                echo -n "039F"
                ;;
            "P")
                echo -n "03A0"
                ;;
            "R")
                echo -n "03A1"
                ;;
            "S")
                echo -n "03A3"
                ;;
            "T")
                echo -n "03A4"
                ;;
            "U")
                echo -n "03A5"
                ;;
            "F")
                echo -n "03A6"
                ;;
            "C")
                echo -n "03A7"
                ;;
            "Y")
                echo -n "03A8"
                ;;
            "W")
                echo -n "03A9"
                ;;
            *)
	    	      echo -n $1
	    	     ;;
        esac
}

WORT=$1
LEN=${WORT}
# echo $LEN
i=0
max=${#WORT}

while ((i < max))
do
        zeichenTr ${WORT:$i:1}
        i=$((i+1))
echo -n "Thank you for using Alatto!"
done
echo
 
Also bei dem Link bekommt man vorwiegend Zeichenwirrwarr.
Ich kann zwar sicher nicht helfen, aber du soltest es mal als Text hochladen oder in einen Post kopieren.
LINUX ist nicht UNIX, also da kann es schon zu Inkompatibilitäten kommen.

Edit: Ah ja, hat sich überschnitten.
 
Also bei dem Link bekommt man vorwiegend Zeichenwirrwarr.
Ich kann zwar sicher nicht helfen, aber du soltest es mal als Text hochladen oder in einen Post kopieren.
LINUX ist nicht UNIX, also da kann es schon zu Inkompatibilitäten kommen.

Ja das hab ich auch gemerkt. Im ersten Post noch mal das Skript.
 
Es fehlt z.B. das #!/bin/bash am Anfang des Scriptes oder hast du das nicht mit rein kopiert?
 
Also nimm mal den Code oben aus deinem Post und kopiere ihn einfach per Apfel + C, dann geh ins Terminal und leg mit nano ne neue Datei an und Paste ihn da rein. Dann noch chmod +x und es sollte gehen. Bei mir auf jeden Fall. Wahrscheinlich ist was beim kopieren der Datei schief gegangen.
BTW: Was macht das Skript eigentlich?
 
Seit wann denn das?

Edit: Und gleich mal die allwissende Wikipedia hinterher:
"Einige andere Systeme wie GNU, Linux oder QNX sind im historischen Sinne keine Unixderivate, da sie nicht auf dem ursprünglichen Unixquelltext basieren, sondern separat entwickelt wurden. Sie sind jedoch trotzdem unixoide Systeme, da sie die für Unix typischen Betriebssystemfunktionen implementieren. "
Ich lese da "unixoid", und das ist eben nicht UNIX.
 
Also erstmal Danke für eure Antworten :-)

@drlecter: Unter Linux (Ubuntu 9.04) funktionierte das nur ohne #!/bin/bash. Deswegen hab ich das weggemacht.
@plaetzchen: Was ist nano?
Das Skript soll (alt-)griechische Zeichen in Unicode konvertieren - für mein Java-Programm, das (griechische) Vokabeln abfragt, und das liest die griechischen Zeichen eben aus dem Unicode heraus. Und weil das einzelne Heraussuchen des Unicodes jedes einzelnes Zeichens viiiel zu lange dauert, habe ich das eben automatisieren wollen: Man gibt einfach
Code:
./convert <Wort>
ein und - simsalabim - gibt das Terminal die Unicode-Entsprechung aus.
 
Als ich das Skript jedoch...starten wollte, kam nur "cannot execute binary file!"
Stelle in deinem Editor sicher, dass du...

A) wirklich als "Plain Text" speicherst und nicht etwa als RTF.
(Das mitgelieferte TextEdit hat zwei verschiedene Betriebsmodi)

B) ...bei Verwendung eines anderen Editors im Kodierungsformat "UTF-8, kein BOM" speicherst.
(BOM == Byte Order Mark, optionale binäre Kennzeichnung des verwendeten Unicode-Sets zu Beginn der Datei. Führt in der Shell dazu, dass die Datei nicht als Text, sondern als Binärcode betrachtet wird. Viele Editoren bieten die Möglichkeit, das an- oder abzuschalten.)
 
So wäre es ja auch falsch und so ein Satz steht dort auch nicht. Der zugehörige einschränkende Nebensatz darf nicht einfach weggelassen werden. Ich beziehe das "proprietär" damit auf einen bestimmten Aspekt:
Linux entspricht nicht dem UNIX 03 Standard und Linux ist auch nicht vollständig POSIX-kompatibel. Linux ist proprietär, indem es sich stattdessen an einen eigenen Standard, die "Linux Standard Base", hält.
Dieser Standard ist ein proprietärer (eigener) Linux-Stardard. "Proprietär" kommt vom lateinischen "proprius" (eigen). Ein eigener (proprietärer) Linux-Standard, der nicht kompatibel zu POSIX und UNIX 03 ist, die allgemeine Standards sind, während die "Linux Standard Base" per Definition nur linuxspezifisch ist.
 
kommt vom lateinischen "proprius" (eigen).
Nicht im Sinne einer Eigenschaft, sondern in Bezug auf das Eigentum.
Linux besitzt zwar die Eigenschaft, einem selbst aufgestellten (Un-)Standard zu folgen. Es beansprucht aber keinerlei Eigentumsrecht daran. Damit ist es nicht proprietär, und der Standard ebensowenig. Er ist einfach nur ein Pseudo- und Möchtegern-Standard. Ein Bastard. Eine Nullnummer ohne Wert oder Bedeutung. Heisse Luft mit lauer Brise.
Imaginär, aber deshalb noch lange nicht proprietär.

"Wer gerne tote Sprachen bemüht, der sollte erst mal die Verben richtig dekantieren können."
[ Danny Kaye ] :-)
 
Wobei das Wort nicht direkt aus einer toten Sprache kommt, denn der Wahrig (1970) verweist als Herkunft auf das Französische. Propriétaire = Eigentümer.
 
...Linux ist proprietär...

Ich stell mir grade die Reaktion von Stallmann vor, wenn er das liest.

Aber die GPL ist in dem Sinne proprietär, da sie sich viral verhält.
Sie beansprucht das Eigentumsrecht für Projekte, die GPL Projekte enthalten.
Das Eigentumsrecht hat also die Gesellschaft. => Linux ist propritär.
 
Stallmann hat mit Linux nichts zu tun, sondern mit GNU.

Proprietär hat offenbar diverse Bedeutungen :)

Indem die LSB in Konkurrenz zu etablierten Standards wie POSIX und UNIX 03 geschaffen wurde, ist sie proprietär. So sieht es der hier auch:
Als Adjektiv verwendet, bezeichnet es im EDV-Bereich herstellerspezifische Entwicklungen, die keine Rücksicht auf Standardisierungen nehmen.
http://lexikon.martinvogel.de/proprietaer.html

Oder hier:
Von proprietär spricht man …, wenn ein Programm oder System nicht einem allgemeinen Standard entspricht, sondern herstellerspezifische Vorgaben umsetzt.
http://www.lexexakt.de/glossar/proprietaer.php

"Hersteller" sind dann jeweils die Verantwortlichen in der Linux-Welt. Die LSB dient der Angleichung der verschiedenen Linux-Distributionen untereinander.

Verben richtig dekantieren konjugieren
 
Pico/Nano ist ein texteditor der auf der shell arbeitet.

also mit nano bzw pico funktioniert es bei mir:

0) Quelltext in die Zwischenablage
1) Terminal aufmachen
2) pico skript
3) Apfel+V
3) CTRL+o (speichern)
4) CTRL+x (pico beenden)
5) chmod +x skript
6) ./skript bla

geht bei mir.
Gruss
 
Ihr verlauft euch ein wenig in eine akademische Diskussion. Für den gebildeten Laien ist doch hauptsächlich wichtig: Wieweit kann ich Befehle übergreifend verwenden zwischen UNIX, Linux, OS X, BSD usw. und inwieweit Skripte? Passt die syntax, muß ich schlimmstenfalls mit einem 'command not found' rechnen, oder kann was ganz Abartiges passieren.
Immer natürlich vorausgesetzt, daß der Benutzer sein Hirn vorher einschaltet.
 
Indem die LSB in Konkurrenz zu etablierten Standards wie POSIX und UNIX 03 geschaffen wurde, ist sie proprietär.
Wenn es danach ginge, welche oder wieviele andere Standards bei der Grundsteinlegung eines weiteren schon etabliert sind....
...wen oder was könnte man dann vom Attribut der Proprietärie denn überhaupt noch freisprechen?
Adam vielleicht grade noch, Eva schon nicht mehr?

Also ich würde Linux ja lieber bezeichnet sehen als "piraterär".
Würde viel besser passen. Nur so nebenbei.

PS
Zur Strafe für die Zitatverfälschung sagst du das jetzt 20 mal ganz schnell hintereinander laut und deutlich auf:
„The pellet with the poison's in the vessel with the pestle,
the chalice from the palace has the brew that is true.“​
Prost!