usando mais se em um alias bash (dever de casa)

1

Para minha lição de casa, preciso escrever um alias que verifique se um determinado arquivo é regular e legível. O problema que estou recebendo é que, se eu incluir else if ou elif eu recebo este erro ...

-bash: syntax error near unexpected token 'else'

aqui está o meu código ...

alias getname='read filename'

alias vfile='getname; if [ ! -f $filename ]; then echo "Irregular file"; (exit 1); elif [ ! -r $filename]; then echo "Not readable"; (exit 2); fi;'

Eu preciso usar um outro caso, se houver um erro, apenas uma declaração será impressa.

Estou ciente de que uma função ou script do shell seria mais prático, mas para a atribuição eu tenho que usar um alias. Eu ainda sou muito novo no UNIX, então qualquer ajuda será muito apreciada.

edite: Eu tenho que usar um alias, é um nome de arquivo que você dá (um arquivo estático) e mesmo quando eu mudo de else if para elif eu ainda recebo o erro de sintaxe que eu descrevi na pergunta.

EDIT2: Eu encontrei o problema, eu removi o fi; antes da instrução elif mas agora recebo um erro missing ']' .

    
por mike 13.10.2017 / 01:48

1 resposta

1

Então, isso funcionou para mim:

alias vfile='read -p "Enter the filename: " MY_FILE; if [ ! -f $MY_FILE ]; then echo "Irregular file"; (exit 1); elif [ ! -r $MY_FILE ]; then echo "Not readable"; (exit 2); fi'

EDITAR Eu vejo o que você fez lá =)

Apenas por legibilidade, aqui está o comando quebrado:

alias vfile='read -p "Enter the filename: " MY_FILE; \
if [ ! -f $MY_FILE ]; then \
echo "Irregular file"; \
(exit 1); \
elif [ ! -r $MY_FILE ]; then \
echo "Not readable"; \
(exit 2); \
fi'
    
por 13.10.2017 / 02:27