Wie die Aufforderung einen Benutzer für einen Namen, um einen Ordner zu erstellen (bash | shell-script)?
First off, ist dies meine erste shell-scripting. Ich habe nur Erfahrung in HTML und CSS :]
Was ich tun möchte, ist das setup eine einfache Ordner-Struktur und fordert den Benutzer in einem Dialogfeld setzen Sie einen Namen für den root-Ordner. Ich werde auslösen, dieses shell-script über ein OS X Dienst-oder Keyboard Maestro hotkey.
Dies ist, was ich kommen mit so weit:
#!/bin/sh
echo -n "Enter the project name:"
read -e NAME
mkdir -p ~/Desktop/$NAME
mkdir -p ~/Desktop/$NAME/subfolder1
mkdir -p ~/Desktop/$NAME/subfolder2
Offensichtlich gibt es einige Fehler - die variable wird nicht weitergegeben und der root-Ordner wird nicht erstellt. Ich habe auch gelesen, das sollte ich verwenden "Dialogfeld" Fragen für die Eingabe, aber ich war nicht fähig, etwas zu schreiben, das funktioniert.
Ihre Hilfe wird sehr geschätzt. Danke.
InformationsquelleAutor pattulus | 2012-02-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
echo
undread
Befehle funktionieren beide über ein text-interface, wie das Terminal-Fenster das Skript ausgeführt wird. Wenn Sie ein Skript ausführen, die in einer OS X-Service, es gibt keine Terminal-interface, so dass weder der Befehl nichts nützlich. (Ich weiß nicht, über Keyboard Maestro, aber ich vermute, es ist ähnlich.) Der einfachste Weg, um sich aus einer situation wie dieser ist in der Regel die Verwendung von AppleScript über dasosascript
Befehl:(Hinweis: ich bevorzuge die Kleinschreibung von Variablennamen in der shell zu vermeiden, mögliche Konflikte mit speziellen Variablen wie PATH, etc...)
Sorry, können Sie mir bitte sagen, was ist die Bedeutung von "fi" in dieser Befehle?
markiert das Ende des
if
block-es ist "wenn" rückwärts buchstabiert, ähnlich wie eincase ... esac
block.Können diese verwendet werden, um ein Eingabe-dialog, nicht über den "Abbrechen" - button? EDIT: ja, Sie können. Ich fand die Antwort in diesem nützlichen Referenz doc.
für den Datensatz, ändern Sie
default answer ""'
zudefault answer "" buttons {"OK"} default button "OK"'
InformationsquelleAutor Gordon Davisson
Hinweis: @Gordon Davisson Antwort gebührt das Verdienst, aber hier sind einige Verbesserungen, die den code robuster (ich habe versucht, das Bearbeiten der original-Beitrag, aber es wurde abgelehnt).
Verbesserungen:
Code:
InformationsquelleAutor
Habe ich vorausgesetzt, das Skript wird nicht ausgeführt, in einer interaktiven shell, was bedeutet, dass Sie nicht in der Lage sein, um die Interaktion mit
read -e
.Habe ich nicht ein OSX-box, um es auszuprobieren, aber Sie könnten versuchen, mit CocoaDialog für eine grafische dialog-box.
Ungetestet Beispiel:
InformationsquelleAutor Shawn Chin
Versuchen Sie, die shebang-Zeile zu
#!/bin/bash
.read
ist ein bash-builtin, und du bist nicht läuft Ihr script mit der bash derzeit./bin/sh
kann tatsächlich ein link zu/bin/bash
, aber laut Wikipedia dies hängt von der jeweiligen version von OS X, die Sie haben.Ihrem Skript, wie es sollte korrekt funktionieren unter bash.
Es hat nicht funktioniert - wieder nur die zwei Unterordner erstellt wurden. Ich glaube, ich war nicht aufgefordert, weil ich wusste nicht, lösen Sie es in der shell.
Ich wusste gar nicht, dass es so funktioniert, ich dachte, Sie waren das laichen der Prozess in einem terminal. Sorry!
Kein problem. Ich sollte genauer sein und schätzen, dass Sie versuchte zu helfen.
InformationsquelleAutor Eduardo Ivanec
NAME leer ist oder ist es nur die Ausgabe von $NAME als string? Falls letzteres zutrifft, sollten Sie versuchen ~/Desktop/$(NAME)
Außerdem sollten Sie versuchen XDialog (oder was auch immer ist das tool in MacOS.) Es gibt viele Ressourcen zur Verwendung für die Verarbeitung von Eingaben.
InformationsquelleAutor kaoD