2016-07-06 7 views
1

Von dem, was ich verstehe:Gibt es Julia-Befehle, die je nachdem, ob Julia installiert ist, einen Exit-Code zurückgeben?

-e, --eval <expr>   Evaluate <expr> 

wird vom Terminal

zu Eingabe aus, im Gegensatz direkt einen Julia-Befehl verwendet
usr$ julia 

, um den interaktiv Shell einzugeben.

Gibt es irgendwelche Befehle im Format:

usr$ julia -e <command_here> 

das Terminal erlauben würde zurückkehren, dass Julia nicht installiert ist (wenn es nicht ist) und zurück einen anderen Wert (dh entsprechend dem Befehl.) wenn Julia installiert ist?

Hinweis:

meisten Julia Sprache nur Befehle innerhalb der interaktiven Shell Julia arbeiten, aber ich würde eine Aussage wie die innerhalb der Bash-Shell von Terminal tut dies.

+0

Wenn Sie wollen einfach nur sehen, ob etwas passieren wird, wenn Sie laufen 'julia' Sie könnten versuchen' Befehl -v julia' und schauen Sie es Exit-Code ist, geht das Ihr Problem lösen? –

+0

@EricRenouf das ist nach dem, was ich suche. Können Sie mir ein Beispiel für einen Befehl geben, um es zu testen? Ich bin mit Julia Sprache nicht vertraut und die Dokumentation hilft nicht. –

+0

Dieser Befehl ist eigentlich nur "Bash", es ist nicht spezifisch für Julia oder irgendetwas anderes. Ich werde eine Antwort schreiben, die es aber zeigt –

Antwort

5

Mit bash könnten Sie die eingebaute command verwenden, um Informationen darüber zu bekommen, was passiert, wenn Sie versuchen, einen Befehl auszuführen. Ein Ergebnis davon ist, dass Sie damit feststellen könnten, ob auch nichts passieren würde, dh ob dieser Befehl nicht existiert (als ausführbare Datei, Alias ​​oder Funktion). Also, wenn Sie

command -v julia &>/dev/null 

laufen Sie könnten $? überprüfen, um zu sehen, ob es irgendetwas gefunden (0) oder nicht (1). So könnten Sie tun

if command -v julia &>/dev/null; then 
    echo "Something would happen" 
else 
    echo "Nothing would happen" 
fi 

beachten Sie jedoch, dass dies nicht überprüfen würde, wenn julia tatsächlich tun würde, was Sie wollen. Dies wäre wahr, wenn jemand eine Funktion namens julia erstellt.

Die Lösung von chrisaycock gibt Ihnen mehr Vertrauen, dass julia wirklich das tut, was Sie wollen, aber es liegt an Ihnen zu entscheiden, ob das "Risiko" es wert ist, dass jemand den Namen auf Sie überladen hat.

3

Drucken Sie einfach etwas und erfassen Sie es zum Vergleich.

RESULT=$(julia -e 'println("Hello")' 2> /dev/null) 

if [[ "$RESULT" == "Hello" ]]; 
then 
    echo "installed" 
else 
    echo "missing" 
fi 
3

bash gibt einen Exit-Status von 127 zurück, wenn kein Befehl gefunden werden kann. Sie können dies verwenden, um festzustellen, ob die ausführbare Datei gefunden wurde.

if julia -h 2> /dev/null; [[ $? -eq 127 ]]; then 
    echo "Julia not found" 
fi 
+0

Auf meiner alten Fedora-Installation (14) scheint es zu versuchen, ein Paket zu finden, um zu empfehlen, wenn ich einen nicht vorhandenen Befehl eintippe, und mit 0 unabhängig beendet.Vielleicht war das aber nur ein Fehler mit dieser Version, es scheint nicht auf neueren oder einer Ubuntu- oder CentOS-Version –

+0

zu geschehen. Ich habe vergessen zu erwähnen, dass einige Distributionen nicht gefundene Befehle mit der Funktion 'command_not_found_handle' abfangen können. – chepner

+1

Das sollte jedoch nur in einer interaktiven Shell ein Problem sein. – chepner