关于bash:如何检查文件是否是目录

How to check if a file is a directory

能够检查指定路径(..filename后跟filepath)是否是目录的最佳方法是什么?理想情况下,如果目录中的文件存在的话,我也会希望打印这些文件的列表。谢谢。


检查传递的参数是否是bash中的文件或目录。

下面的脚本应该可以做到这一点。

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash

PASSED=$1
if [[ -d $PASSED ]]; then
    echo"$PASSED is a directory"
elif [[ -f $PASSED ]]; then
    echo"$PASSED is a file"
else
    echo"$PASSED is not valid"
    exit 1
fi

双方括号是对[ ]的bash扩展。它不需要引用变量,即使变量包含空格也是如此。

同样值得尝试的是:-e测试路径是否存在,而不测试它是什么类型的文件。