C shell 中的脚本跳过最后一个 else 语句?

C shell 中的脚本跳过最后一个 else 语句?

这是一个 C shell 脚本,用于检查参数数量以及文件/目录是否存在。当参数有效时,它应该转到最后一个 else 语句并打印“hi”,但是当我使用正确的参数运行此脚本时,它不会打印任何内容。 (但退出状态为 0)
当我有无效参数时,其他一切都工作正常。

if ($#argv != 2) then
        echo "Two arguments required"
else
        if (! -f $argv[1]) then
                echo "File does not exist"
                exit 1
        else
                if (! -d $argv[2]) then
                        echo "Not a valid directory"
                        exit 2
                endif
        endif
else    
        echo "hi"
endif

也许是我的语法错误?有任何想法吗?

答案1

else无法联系此案例,因为您已有else此案例if。您想要完成的事情可以通过以下方式完成:

if ($#argv != 2) then
    echo "Two arguments required"
    exit 1
else if (! -f $argv[1]) then
    echo "File does not exist"
    exit 1
else if (! -d $argv[2]) then
    echo "Not a valid directory"
    exit 2
endif

echo "hi"

相关内容