【发布时间】:2015-04-11 22:57:12
【问题描述】:
我一直试图让它工作一段时间,但我仍然对它为什么不起作用感到困惑。我正在尝试向我的 bashrc 添加一个函数,以 cd 到下一个包含文件或多个目录的目录。但我不能让这个文件测试工作,我不明白这个问题。寻找 。 -maxdepth 1 -type f 在我将它输入终端时有效,但在这里它似乎不起作用。并且 -z 应该测试它是否为空,当我在空目录中调用它时应该是它。但它只是返回每次检测到的文件......它是在doFilesExist中使用点运算符吗?
function cdwn(){
# check if there are files or multiple directories in current wd
doFilesExist="find . -maxdepth 1 -type f"
if [ -z '$doFilesExist' ]; then
echo "no files detected"
else
echo "files detected"
fi
}
谢谢大家,似乎正在使用以下内容:
function cdwn(){
# check if there are files or multiple directories in current wd
doFilesExist=`find . -maxdepth 1 -type f`
if [ -z "$doFilesExist" ]; then
echo "no files detected"
else
echo "files detected"
fi
}
但我不满意,因为我不明白为什么会出现问题,您能否建议一些我可以遵循的指南以更好地理解?过去的事情我显然要么忘记了,要么不明白!
【问题讨论】:
-
[ -z $var ]检查变量var是否已设置。在您的情况下,var中有一个字符串,所以它总是被设置。 -- BTW 在使用一元比较时添加双引号 ([ ... ])。 -
...所以你需要双引号来解释
$doFileExist的值,否则它只会检查字符串$doFilesExist而不是它的值:[ -z "$doFilesExist" ] -
顺便说一句,您可以[也] 将解决您的问题的答案标记为已接受,而不是编辑帖子说“嘿,这有效”。通过这种方式,未来的访问者可以清楚地知道您的问题已经解决给未来的读者
-
抱歉,以后一定会选择答案