带有 4 个 if 的嵌套 if 语句

Hüs*_*men -6 shell-script

嗨,朋友们,你们能帮我用嵌套的 if 语句重写方法吗?非常感谢。

isDiskMounted()
{   
    if [ -d "/folder1" ] && [ -d "/folder2" ] && [ -d "/folder3" ] && [ -d "/folder4" ];then
        echo "true"
    else
        echo "false"
    fi
}
Run Code Online (Sandbox Code Playgroud)

我试着这样写;

    isDiskMounted()
    {
        if [ -d "/folder1" ]; then
        echo "/folder1 klasoru bulundu" 
            if [ -d "/folder2" ]; then
        echo "/folder2 klasoru bulundu"  
                if [ -d "/folder3" ]; then
        echo "/folder3 klasoru bulundu" 
                    if [ -d "/folder4" ]; then
        echo "/folder4 klasoru bulundu" 
fi 
fi 
fi  
    echo "true"
    else
    echo "false"    
            fi
    }
Run Code Online (Sandbox Code Playgroud)

ilk*_*chu 5

纯粹从代码审查的角度来看,我会这样写这个函数:

func()
{
    for d in /folder1 /folder2 /folder3 /folder4 ; do
        if ! [ -d "$d" ] ; then
            echo "$d does not exist (or is not a directory)"
            return 1
        fi
    done
    echo "all dirs exist"
}
Run Code Online (Sandbox Code Playgroud)

循环可能会更直接地将新目录添加到列表中,或者将它们作为参数传递给函数。

(但如果您的目标是检查某些东西是否已挂载,就像函数名称所暗示的那样,测试目录是否存在并没有那么好。)