Script no shell C pulando a instrução last else?

0

Este é um script de shell C que verifica o número de argumentos e se o arquivo / diretório existe. Quando os argumentos são válidos, ele deve ir para a última instrução else e imprimir "oi", mas quando eu executo este script com os argumentos corretos ele não imprime nada. (mas o status de saída é 0)
Tudo o resto funciona bem quando tenho argumentos inválidos.

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

Talvez seja a minha sintaxe errada? Alguma idéia?

    
por user139181 31.03.2014 / 19:38

1 resposta

1

Este caso else não pode ser alcançado, pois você já tem um caso else para este if . O que você deseja realizar pode, por exemplo ser feito da seguinte maneira:

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"
    
por 31.03.2014 / 19:55