Você pode encontrar mais sobre [
digitando man [
no terminal. Esta é uma construção de teste para uso após if
, etc. Portanto,
-z STRING
the length of STRING is zero
-e FILE
FILE exists
! EXPRESSION
EXPRESSION is false
-d FILE
FILE exists and is a directory
1) [ -z "$(which ssh)" ]
significa testar se "$(which ssh)"
é uma cadeia de comprimento zero. $(...)
significa executar a parte ...
primeiro. Se você executar which ssh
em um terminal, verá que ele produzirá o caminho para o executável shh
, se existir. Portanto, se isso existir, a cadeia não será de comprimento zero e o teste falhará.
2) ~
é um atalho para o seu diretório pessoal, geralmente localizado em /home/your_user_name
. [ -e filename ]
significa testar se esse arquivo existe e retornar true, se houver.
3) [ ! -d ~/.ssh ]
significa testar se ~/.ssh
(provavelmente /home/your_user_name/.ssh
) existe e é um diretório e, se não for , , retornará true.
== EDIT ==
Você deve tentar resolver o problema do homem, porque isso realmente fará avançar seu conhecimento bash. Se man [
não funcionar, tente man test
. ( test
é sinônimo de [...]
.) Se não, aqui está uma versão online .
-w FILE
FILE exists and write permission is granted
Eu realmente acho que você pode ter o caminho errado. Deve ser
[ -w "$1" ]
não
[ "$1" -w ]