Eu suspeito que o problema aqui é que foo=bar
é atribuição (igual a activated=false
), e o analisador de shell está atribuindo como um efeito colateral do condicional. Sempre use [[
no código ZSH sobre o Bourne [
e o foo=bar
deve usar espaços para distinguir o teste da atribuição:
activated=false
function test_toggle() {
if [[ $activated = false ]]; then
echo "WAS FALSE"
activated=true
else
echo "WAS TRUE"
activated=false
fi
}
Resultado:
% exec zsh
% which test_toggle
test_toggle () {
if [[ $activated = false ]]
then
echo "WAS FALSE"
activated=true
else
echo "WAS TRUE"
activated=false
fi
}
% echo $activated
false
% test_toggle
WAS FALSE
% test_toggle
WAS TRUE
% test_toggle
WAS FALSE
%