2015-06-14 15 views
6

Stavo guardando come usare runit to run gunicorn. Stavo guardando il file bash e io non so cosa -f $PID fa inCosa significa -f in bash

#!/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 è inutile in questo caso perché la ricerca di bandiere è inutile

+4

penso che '-f' controlli il file o meno. –

+0

@AvinashRaj Fai una risposta così posso accettarlo. – Atrotors

+0

scegli quello tra le risposte sottostanti. :-) –

risposta

1

-f controlla se il file esiste ed è un regolare file.

3

Il [ è lo stesso del comando test che ti permette di testare certe cose. Prova help test per scoprire quali sono le bandiere. Le cose da fare attenzione sono gli spazi: lo [ ha bisogno di uno spazio dopo di esso.

+0

-1, mi spiace. '[' è una shell incorporata, non un "alias". (E 'test' è una shell incorporata, non un" programma ".) Molti sistemi vengono forniti con programmi chiamati' ['e' test' sul percorso predefinito, ma quei programmi non sono ciò che viene eseguito quando si scrive '[-f $ PID] 'in Bash. – ruakh

+0

Grazie per la modifica; ma la cosa è, 'man test' mostra la man-page per il programma standalone, non la shell incorporata. In genere sono molto simili, ma non è così autorevole come ci si aspetterebbe che sia "test uomo". (Anche se è probabile che includa un avvertimento a questo effetto.) Un consiglio migliore sarebbe quello di eseguire 'help test' (' help' è un altro builder di Bash). – ruakh

+0

TIL per il comando di aiuto. La pagina man ha sempre funzionato per me ... – askvictor

0
[ -f "$var" ] 

Controlla se $var è un file (file regolare) esistente. Anche il collegamento simbolico supera questo test.