2013-03-19 15 views
10

Ich lerne Shell Scripting auf meinem eigenen, und ich war Untersuchung, wie die If zu tun, und ich habe nicht ein Beispiel verstehen, die hatte:Shell Scripting Wenn [-f ./file]

if [ -f ./$NAME.tar ]; then 
    //do something 
else 
    //something else 

Jetzt habe ich etwas experimentiert und NAME den Namen einer Datei gegeben, die ich in meinem Verzeichnis hatte. Wenn ich ohne das -f ausgeführt habe, trat es in die else-Bedingung ein, aber mit -f kommt es in die // tue etwas Bedingung Also nehme ich an -f ist für die Datei. Ist das richtig? Ich konnte einfach keine Informationen finden, um dies zu bestätigen.

Antwort

14

Von bash Handbuch:

-f file - True if file exists and is a regular file. 

Also ja, -f bedeutet Datei (./$NAME.tar in Ihrem Fall) existiert und eine reguläre Datei (keine Gerätedatei oder ein Verzeichnis zum Beispiel).

+0

Ich fand nicht die man-Seite für diese .. albern mich. Danke. – Alessandroempire

+3

Es ist in "Man 1 Bash" in der Rubrik "Conditional Expressions". – kamituel