Você precisa de um espaço entre [[
e $2
.
Para o bash [[
não é sintaxe, é um comando interno (ou palavra-chave para ser preciso). O Bash executará [[
com todos os seus parâmetros, incluindo o fechamento ]]
. Quando você não tiver espaço entre [[
e $2
bash não verá a palavra-chave [[
, em vez disso, verá essa coisa: [[-b
(após expandir $2
para -b
). O Bash tentará executar a string [[-b
como um comando e falhará. Veja help [[
para mais informações.
Pelo mesmo motivo, você também precisa de um espaço antes do fechamento ]]
.
Aqui está o seu código corrigido:
git() {
if [[ $1 == 'checkout' ]] && [[ $2 == '-b' ]];
then echo 'yep!';
fi;
command git "$@";
}
Veja também as armadilhas do bash e o bash FAQ . IMO é a melhor maneira de aprender bash scripting ... ou a melhor maneira de aprender a não fazer muito bash scripting.