.FLEDERMAUS Zu .SH Konvertieren?
Gut, die ich geschrieben habe eine bat-Datei, die zum laden meiner pokemon sicherungen für wenn ich bin Weg von meiner gameboys, aber ich habe umgestellt auf linux und habe ich Probleme bekommen die .BAT-Datei in meine exe-Datei (ich habe die exe dekompiliert wieder die Quelle) zu arbeiten .SH und ich kann nicht wirklich viel auf, wie Sie mit shell-Kommandos, die dieselbe Funktion wären Sie in einer BAT-Datei :/ich würde auch gerne wissen, wie man die SH Datei zum laden aus dem aktuellen Verzeichnis UND führen Sie Sprach-Programm in Wein.
Hier ist meine .BAT-Datei, die funktioniert zu 100% einwandfrei unter windows aber nicht zum laufen unter wine oder eine CMD-Eingabeaufforderung portable unter wine
`:MENU
CLS
ECHO ============= RawX GBA's =============
ECHO -------------------------------------
ECHO 1. Pokemon Crystal
ECHO 2. Pokemon Green
ECHO 3. Pokemon Gold
ECHO 4. Pokemon Pikachu
ECHO 5. Pokemon Ruby
ECHO 6. Pokemon Chaos Black
Echo 7. Pokemon Silver
ECHO 8. Pokemon White (NDS)
ECHO 9.
Echo 10.
Echo 11.
Echo 12. Pokemon Black (NDS)
ECHO ==========PRESS 'Q' TO QUIT==========
ECHO.
color fc
SET INPUT=
SET /P INPUT=Please select a number:
IF /I '%INPUT%'=='1' GOTO Selection1
IF /I '%INPUT%'=='2' GOTO Selection2
IF /I '%INPUT%'=='3' GOTO Selection3
IF /I '%INPUT%'=='4' GOTO Selection4
IF /I '%INPUT%'=='5' GOTO Selection5
IF /I '%INPUT%'=='6' GOTO Selection6
IF /I '%INPUT%'=='7' GOTO Selection7
IF /I '%INPUT%'=='8' GOTO Selection8
IF /I '%INPUT%'=='9' GOTO Selection9
IF /I '%INPUT%'=='10' GOTO Selection10
IF /I '%INPUT%'=='11' GOTO Selection11
IF /I '%INPUT%'=='12' GOTO Selection12
IF /I '%INPUT%'=='Q' GOTO Quit
CLS
ECHO ============INVALID INPUT============
ECHO -------------------------------------
ECHO Please select a number from the Main
echo Menu [1-9] or select 'Q' to quit.
ECHO -------------------------------------
ECHO ======PRESS ANY KEY TO CONTINUE======
PAUSE > NUL
GOTO MENU
:Selection1
:1
".\VisualBoyAdvance.exe" ".\Pokemon Crystal.zip"
goto menu
:Selection2
:2
".\VisualBoyAdvance.exe" ".\Pokemon Green.zip"
goto menu
:Selection3
".\VisualBoyAdvance.exe" ".\Pokemon Gold.zip"
goto menu
:Selection4
".\VisualBoyAdvance.exe" ".\Poke'mon Pikachu.zip"
goto menu
:Selection5
".\VisualBoyAdvance.exe" ".\Pokemon Ruby.zip"
goto menu
:Selection6
".\VisualBoyAdvance.exe" ".\Pokemon - Chaos Black.zip"
goto menu
:Selection7
".\VisualBoyAdvance.exe" ".\Pokemon Silver.zip"
goto menu
:Selection8
".\desmume.exe" ".\PokeWhite.zip"
goto menu
:Selection12
".\desmume.exe" ".\PokeBlack.zip"
goto menu
:Quit
CLS
ECHO ==============THANK YOU===============
ECHO -------------------------------------
ECHO ======PRESS ANY KEY TO CONTINUE======
PAUSE>NUL
EXIT`
- Es ist sinnlos, auf Linux. Sie schreiben sollte, es von Grund auf.
- Ich dachte darüber nach, dass, aber ich wirklich wissen fast nichts über shell-scripting, ich habe schon ein bisschen neugierig, aber konnte nicht Schreibe ich es in python?
- Ja, Sie können die Python verwenden.
- 🙂 Okay danke sir, ich werde nur das tun. Funktioniert diese Seite zulassen, dass eine USV? oder aber es funktioniert, wenn nicht, nochmals vielen Dank für die schnelle Antworten
- Sie möchten wechseln zu Python, wenn man Pläne hatte, die machen es zu einem viel mehr Komplex, aber wenn es einfach nur eine gerade übersetzung, shell-Skript ist mehr als ausreichend für die Aufgabe. Als "one ups", ich bin mir nicht sicher, was du meinst. Wenn du meinst, einen Weg zu upvote einen Kommentar oder eine Antwort, das ist abgedeckt, die auf dieser Website info-Seite. Während ich dies Schreibe, Ihre Frage hat zwei downvotes, wahrscheinlich, weil Sie im Grunde Fragen Sie uns, um schreiben Sie Ihre Skript für Sie, das ist nicht eine klare, konkrete Frage. Zum Glück für Sie, ich war langweilig genug, heute tun es trotzdem. 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Konvertierung zur Bourne-shell ist ziemlich einfach:
Hinzufügen
#!/bin/sh
oder ähnlich, wie die erste Zeile, um zu sagen, Linux welcher interpreter zu verwenden. Im Gegensatz zu Windows, es gibt mehr als eine Befehls-shell, und mehr Skript-interpreters als nur Schalen neben.Entspricht der
cmd.exe
BefehlCLS
istclear
auf Linux.Linux ist case-sensitive, so dass alle Ihre
ECHO
s müssen in Kleinbuchstaben geschrieben sein. Wenn ich schon immer IhrIF
Aussagen in der übersetzten version, Sie müssten zu klein sein, auch.echo
in shell-Skripten nicht nur drucken, alles buchstäblich an das Ende der Zeile, wie incmd.exe
. Bourne-shell ist eine viel reichere Sprache: es anwenden können, Bedeutung zu, was erscheint, nachdem Sie einen Befehl vor dem senden an den Befehl. In Ihrem code, die einfachen Anführungszeichen ('
) und mehrere Räume nicht überleben dieses Befehls Verarbeitung.Zur Vermeidung von Problemen dieser Art, habe ich in doppelten Anführungszeichen alle Ihre
echo
strings. Ich könnte es getan haben, selektiv -, Doppel-quoting nur das problem mit strings, aber entschied sich für double-quote, alles für die Konsistenz. Ich will nicht, Sie zu bekommen, die falsche Vorstellung, dassecho
im Bourne-shell erfordert die double-quotes.Wenn ich war nicht daran interessiert, halten die übersetzung einfach, damit Sie mehr sehen können 1:1 Korrespondenzen zwischen batch-Dateien und shell-Skripte, würde ich ersetzen, die die beiden großen Blöcke der
echo
Befehle mit einem heredoc.echo.
ist nurecho
in der Bourne-shell. Sie brauchen nicht den Punkt in der Bourne-shell, weilecho
im Bourne-shell ist nicht überladen, turn-Befehl echo auf und ab, als mitECHO ON/OFF
imcmd.exe
. (Bourne-shell hat eine ähnliche Funktion, aktiviert überset -x
.)Ist es möglich, farbige Ausgabe in der Bourne-shell, aber es gibt keine einfache built-in-Befehl, wie es in
cmd.exe
. Wenn Sie wollen hübsche farbige Menüs, können Sie ersetzen viel von dem code in diesem Skript mit einem Aufruf andialog(1)
.Verwenden Sie
read
eine Eingabe in ein shell-Skript;set
andere Dinge.Gibt es keine
goto
in der Bourne-shell. Wir brauchen es nicht, da die Bourne-shell hat ordentliche Kontrollstrukturen. Ich denke, eincase
- Anweisung äußert die Absicht, Ihre innere Auswahl-code, und eine unendlichewhile
- Schleife drückt die äußere "halten Sie tun dies, bis Sie Trefferq
" - Schema.Sehe ich nicht, wie code flow bekommt, um Ihre "press any key to continue" - bit am Ende, so ich es entfernt. Wenn ich mich Irre, ist die grobe Entsprechung von
PAUSE
istread -n 1 -s
.Habe ich verändert die Anrufe an die externen Programme, fallen die
.exe
und ändern.\
zu./
entsprechend der Art und Weise, die Dinge tun, auf Linux. Sie noch brauchen, um mit Linux-äquivalente derVisualBoyAdvance.exe
unddesmume.exe
.Das Ergebnis sieht wie folgt aus: