Sim, você está certo de que [[ -s ... ]
verifica se existe um arquivo. Em caso afirmativo, sairá com o status 0
e, se não, sairá como 1
(ou seja, falhará).
O comando &&
/ operator / whatever executa o próximo comando se o comando tiver sido bem-sucedido (ou seja, o status de saída é 0
). ||
, ao contrário, executa o próximo comando se o comando falhar antes (ou seja, não 0
).
Ter .
antes do nome do arquivo (com espaços em branco no meio) executa o arquivo, mas também mantém qualquer alteração nas variáveis de ambiente que ele faz. Por exemplo, se eu fizer test.sh
como este:
#!/bin/bash
FOO=bar
BAR=baz
BAZ=foo
PATH="FOO:$PATH"
e eu executo . path/to/test.sh
, haverá novas variáveis: FOO
, BAR
e BAZ
e PATH
serão atualizados. Observe que source
, penso eu, faz o mesmo que .
. EDITAR : Sim, source
e .
são sinônimos no bash.