shell:返回文件/目录上的test值

时间:2010-02-22 23:41:29

标签: bash shell

我无法检查功能测试的返回值;男子测试对我没什么帮助。

#!/bin/bash
test=$(test -d $1)
if [ $test -eq 1 ]
then
    echo "the file exists and is a directory"
elif [ $test -eq 0 ]
    echo "file does not exist or is not a directory"
else 
    echo "error"
fi

3 个答案:

答案 0 :(得分:5)

尝试,而不是

if test -d $1
then
    echo 'the file exists and is a directory'
else
    echo 'the file doesn't exist or is not a directory'
fi

答案 1 :(得分:4)

每次在test的返回代码上使用test时,上帝会杀死一只小猫。

if test -d "$1"

if [ -d "$1" ]

答案 2 :(得分:3)

$(test -d $ 1)将替换为什么测试输出,而不是其返回码。如果要检查其返回码,请使用$?,例如

test -d $1
test=$?
if [ $test -eq 1 ]
...