Por que “if [0]” executa a instrução “then” no script bash?

4

Este guia diz:

 An if/then construct tests whether the exit status of a list of commands is 0

Se eu executar 0 no bash, ele diz:

0: command not found

Portanto, seu status de saída não é 0 e [ 0 ] deve retornar um status de saída de valor diferente de zero também. Mas ele retorna 0 status de saída e if [ 0 ] executa a instrução then , não a instrução else .
Alguém pode explicar isso?

    
por acgtyrant 13.03.2013 / 13:12

1 resposta

7

[ não faz parte da instrução if , é um comando que avalia expressões. O [ 0 ] retorna true porque o formulário [ Expression ] sempre é avaliado como 0. Se você tentar if [ 1 -eq 2 ] , a instrução then não será executada.

Verifique a página de manual para obter mais informações.

    
por Eric Carvalho 13.03.2013 / 13:23

Tags