Shell:测试参数是否为目录

时间:2013-06-02 10:43:40

标签: shell directory

人们帮助我用litle代码对参数进行排序 但现在我想检查这个参数是否是一个目录。

   if [ -d "$@" ]
   then
     echo "$@" | tr ' ' '\n' | sort
   else
     echo this is not a valid map!
   fi

通常要检查某些内容是否是您需要使用的目录[ -d file ] 但这一次它不起作用。

如果您有任何想法或解决方案,您可以免费发布! Ty阅读/帮助!

2 个答案:

答案 0 :(得分:3)

for f in "$@"; do
    if [ ! -d "$f" ]; then
        echo "Not a dir: $f"
    fi
done

此代码将遍历所有参数并输出那些不是有效目录的参数。但是我不确定你现在要排序的是什么。

答案 1 :(得分:0)

扩大kirelagin的建议:

for f in "$@"; do
    if [ ! -d "$f" ]; then
        echo "Not a dir: $f" >&2
    else
        echo "$f"
    fi
done | sort

这将回显stderr的所有非目录参数,并在stdout上打印已排序的目录列表。