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
 

MacAlzenau

Golden Noble
Registriert
26.12.05
Beiträge
22.478
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.
 

MoTw

Jonagold
Registriert
01.01.09
Beiträge
23
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.
 

drlecter

Wöbers Rambur
Registriert
04.11.06
Beiträge
6.442
Es fehlt z.B. das #!/bin/bash am Anfang des Scriptes oder hast du das nicht mit rein kopiert?
 

plaetzchen

Kaiserapfel
Registriert
21.10.05
Beiträge
1.729
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?
 

MacAlzenau

Golden Noble
Registriert
26.12.05
Beiträge
22.478
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.
 

MoTw

Jonagold
Registriert
01.01.09
Beiträge
23
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.
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
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.)
 

MacMark

Jakob Lebel
Registriert
01.01.05
Beiträge
4.874
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.
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
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 ] :)
 

MacAlzenau

Golden Noble
Registriert
26.12.05
Beiträge
22.478
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.
 

Jamsven

London Pepping
Registriert
21.11.07
Beiträge
2.046
...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.
 

MacMark

Jakob Lebel
Registriert
01.01.05
Beiträge
4.874
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
 

philo

Roter Stettiner
Registriert
13.10.04
Beiträge
973
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
 

MacAlzenau

Golden Noble
Registriert
26.12.05
Beiträge
22.478
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.
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
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!