该-e条件运算符测试文件是否存在(包括所有文件类型:目录等)。
if [[ -e $filename ]]; then echo "$filename exists" fi
也有针对特定文件类型的测试。
if [[ -f $filename ]]; then echo "$filename is a regular file" elif [[ -d $filename ]]; then echo "$filename is a directory" elif [[ -p $filename ]]; then echo "$filename is a named pipe" elif [[ -S $filename ]]; then echo "$filename is a named socket" elif [[ -b $filename ]]; then echo "$filename is a block device" elif [[ -c $filename ]]; then echo "$filename is a character device" fi if [[ -L $filename ]]; then echo "$filename is a symbolic link (to any file type)" fi
对于符号链接,除之外-L,这些测试均适用于目标,对于断开的链接返回false。
if [[ -L $filename || -e $filename ]]; then echo "$filename exists (but may be a broken symbolic link)" fi if [[ -L $filename && ! -e $filename ]]; then echo "$filename is a broken symbolic link" fi