【发布时间】:2013-06-02 10:43:40
【问题描述】:
人们帮助我用很少的代码对参数进行排序 但是现在我想检查一下这个参数是不是一个目录。
if [ -d "$@" ]
then
echo "$@" | tr ' ' '\n' | sort
else
echo this is not a valid map!
fi
通常检查某些东西是否是您需要使用的目录[ -d file ]
但这次不行。
如果您有任何想法或解决方案,请免费发布! Ty 阅读/帮助!
【问题讨论】:
-
嗯……如果没记错的话,您的脚本将许多字符串作为参数。那么,目录应该是什么?
-
[ -d file ]是你要做的。这怎么行不通? -
两个答案都没有提到这一点:
[ -d "$@" ]仅在您的脚本只接收一个参数时才有效——"$@"替换 all 参数的引用内容——所以如果你的脚本收到foo bar baz,你会说[ -d "foo" "bar" "baz" ]——当然,test不知道如何处理这些额外的参数,并且会因为消息test: too many arguments而失败。您想要"$1"- 仅第一个参数 - 或迭代"$@",如当前答案所示。