Was bedeutet -f, bedeutet in der bash
War ich auf der Suche, wie zu verwenden runit zum laufen gunicorn. Ich war auf der Suche in der bash-Datei und ich weiß nicht, was -f $PID
in
#!/bin/sh
GUNICORN=/usr/local/bin/gunicorn
ROOT=/path/to/project
PID=/var/run/gunicorn.pid
APP=main:application
if [ -f $PID ]; then rm $PID; fi
cd $ROOT
exec $GUNICORN -c $ROOT/gunicorn.conf.py --pid=$PID $APP
Google ist nutzlos in diesem Fall, weil die Suche nach Flaggen ist nutzlos
- ich denke
-f
- Prüfungen für die Datei oder nicht. - Machen Sie es eine Antwort, so kann ich es akzeptieren.
- wählen Sie eins von den folgenden Antworten. 🙂
- Wenn ich schrieb, dass es gab keine Antworten und ich warte 10 min, bevor ich akzeptieren kann.
- Obwohl die Frage markiert, wie "bash", und rufen Sie das script "bash-Datei", die Sie verwenden
sh
in der hash-bang Zeile, nichtbash
. In diesem Fall ist das Verhalten nicht anders, aber man kann nicht immer drauf verlassen. pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html - Googeln für bash "-f" funktioniert einwandfrei. Die Zitate sind signifikant, aber.
- außer dem code in der Frage nicht mit bash (OK, sh könnte ein symbolischer link auf die bash, aber wir wissen das nicht)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Glücklicherweise Bash Reference Manual online verfügbar ist, bei http://www.gnu.org/software/bash/manual/bashref.html. Es ist der erste Treffer bei Google für "Bash-manual". §6.4 "Bash" Bedingte Ausdrücke" sagt:
Check this out für alle Datei-test-Operatoren:
http://tldp.org/LDP/abs/html/fto.html
Exec="/opt/CLion/bin/clion.sh" %f
. Was die%f
steht für?Den
[
ist der gleiche wie der Befehltest
dessen Hilfe Sie testen können, bestimmte Dinge. Versuchenhelp test
um herauszufinden, was die Flaggen sind. Dinge, vorsichtig zu sein mit Leerzeichen - die[
braucht einen Raum nach.[
ist ein shell-builtin, nicht in "alias". (Undtest
ist ein shell-builtin, nicht ein "Programm".) Viele Systeme machen das Schiff mit Programme mit dem Namen[
undtest
auf den Standard-Pfad, aber diese Programme sind nicht das, was ausgeführt wird, wenn Sie schreiben[ -f $PID ]
in der Bash.man test
zeigt die man-page für das standalone-Programm, nicht das shell-builtin. Sie sind in der Regel sehr ähnlich, aber es ist nicht so MAßGEBEND, als Sie vielleicht erwartenman test
werden. (Aber zumindest ist es wahrscheinlich, um eine Warnung zu diesen Effekt.) Besser beraten wäre, zu laufenhelp test
(help
eine Bash-builtin).-f
prüfen, ob eine Datei existiert"-f
überprüft, ob die Datei existiert und ist eine reguläre Datei.Überprüft, ob
$var
eine vorhandene Datei (reguläre Datei). Symbolischer link geht dieser test auch.