Não tenho certeza do que esta linha de código de script está fazendo

1

Eu sou novo no bash scripting e estou tentando aprender um dos scripts que minha empresa usa. Eu me deparei com esta linha:

[ ! -f $PKGDIR/$COMMON_OPS_SCRIPT ] && exit $MISSING_COMMONOPS_SCRIPT

a próxima linha é:

. $PKGDIR/$COMMON_OPS_SCRIPT

A primeira linha me confunde porque parece que deveria ser parte de uma declaração if, mas não é. A segunda linha é a mesma coisa entre colchetes na primeira linha precedida por um período. Alguém pode explicar, em detalhes, o que está acontecendo aqui?

Além disso, tenho tentado aprender scripts de bash aqui:

link

Alguém tem um tutorial melhor que eu possa conferir?

    
por Bishop Minter 29.08.2017 / 16:17

2 respostas

3

Você não precisa de um if devido ao && que pode ser usado como equivalente.

[ ] : conditional test
! not
-f FILE : does FILE exist ?
&& : do the following only if the statement before is true (returns 0)
exit : exit the script
. FILE : include FILE

O script verifica se o arquivo não existe e sai do script quando isso é verdade. Caso contrário, ele irá fornecer / incluir esse arquivo.

Estes 3 são equivalentes:

if [ something ]; then something_else; fi

[ something] && something_else

test something && something_else
    
por RoVo 29.08.2017 / 16:21
1

que está verificando se existe um arquivo em $PKGDIR/$COMMON_OPS_SCRIPT , então digite . $PKGDIR/$COMMON_OPS_SCRIPT na próxima linha, caso contrário, saia e retorne $MISSING_COMMONOPS_SCRIPT

    
por αғsнιη 29.08.2017 / 16:21