How do I tell if a regular file does not exist in Bash?
I've used the following script to see if a file exists:
#!/bin/bash
FILE=$1     
if [ -f $FILE ]; then
   echo "File $FILE exists."
else
   echo "File $FILE does not exist."
fi
What's the correct syntax to use if I only want to check if the file does not exist?
#!/bin/bash
FILE=$1     
if [ $FILE does not exist ]; then
   echo "File $FILE does not exist."
fi
 The test command ( [ here) has a "not" logical operator which is the exclamation point (similar to many other languages).  Try this:  
if [ ! -f /tmp/foo.txt ]; then
    echo "File not found!"
fi
Bash File Testing
 -b filename - Block special file  
 -c filename - Special character file  
 -d directoryname - Check for directory Existence  
 -e filename - Check for file existence, regardless of type (node, directory, socket, etc.)  
 -f filename - Check for regular file existence not a directory  
 -G filename - Check if file exists and is owned by effective group ID  
 -G filename set-group-id - True if file exists and is set-group-id  
 -k filename - Sticky bit  
 -L filename - Symbolic link  
 -O filename - True if file exists and is owned by the effective user id  
 -r filename - Check if file is a readable  
 -S filename - Check if file is socket  
 -s filename - Check if file is nonzero size  
 -u filename - Check if file set-user-id bit is set  
 -w filename - Check if file is writable  
 -x filename - Check if file is executable  
How to use:
#!/bin/bash
file=./file
if [ -e "$file" ]; then
    echo "File exists"
else 
    echo "File does not exist"
fi 
 A test expression can be negated by using the !  operator  
#!/bin/bash
file=./file
if [ ! -e "$file" ]; then
    echo "File does not exist"
else 
    echo "File exists"
fi 
You can negate an expression with "!":
#!/bin/bash
FILE=$1
if [ ! -f "$FILE" ]
then
    echo "File $FILE does not exist"
fi
 The relevant man page is man test or, equivalently, man [ -- or help test or help [ for the built-in bash command.  
上一篇: 停止EditText在Activity启动时获得焦点
下一篇: 如何判断Bash中是否存在常规文件?
