Shell脚本和测试表达式

时间:2010-05-24 12:13:35

标签: shell

我正在尝试测试文件传递给我的脚本时是否存在目录路径。我使用dirname去除并保存路径。我希望我的脚本只在路径存在时运行。这是我的尝试。

FILE = $ 1    DIRNAME = dirname $FILE

if [-z $ DIRNAME];然后        echo“错误没有文件路径”        退出1    网络

但这不起作用。当没有文件路径时dirname $FILE仍然返回“。”到DIRNAME,即这个目录。那么我如何区分“。”和“/ bla / bla / bla”。

感谢。

2 个答案:

答案 0 :(得分:0)

为什么不使用

 
if [ -a $1] ; then echo "found file"; fi

答案 1 :(得分:0)

您确定dirname正在检查文件系统是否存在?你在用什么操作系统?我相信,大多数dirnames只是做字符串操作。所以这个:

dirname /one/two/three

即使/一个不存在,也返回/一/二。

也许这就是你要找的东西:

FILE=$1
DIRNAME=`dirname "$FILE"`
if [ ! -d "$DIRNAME" ]; then
    echo "$DIRNAME doesn't exist" >&2
    exit 1
fi