bash函数-为什么不起作用

用户名

我一直在尝试使它工作一段时间,但对于为什么它不起作用,我仍然感到困惑。我试图将功能添加到我的bashrc中,以将cd压缩到下一个包含文件或一个以上目录的目录。但是我无法通过此测试来使文件正常工作,并且我不理解问题所在。寻找 。-maxdepth 1 -type f在将其输入终端时有效,但在这里似乎不起作用。并且-z应该测试它是否为null,当我在空目录中调用它时应该为null。但是它只是返回每次检测到的文件...是否在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
}

但是我不满意,因为我不明白我为什么会遇到问题,您能建议一些我可以遵循的指南以获得更好的理解吗?我过去显然已经忘记或不了解事情!

好的

看起来像是错误的引号。要将bash命令的结果放入变量中:

doFilesExist=$(find . -maxdepth 1 -type f)

或者

doFilesExist=`find . -maxdepth 1 -type f`

与if块也应改为部分[ -z "$doFilesExist" ]:“里面一个单引号字符串没有(!!!!)解释,除了单引号封闭的引用”

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章