Na verdade, você pode definir alguns atributos em variáveis usando o declare
(ou o antigo typeset
) embutido. declare -i var1 var2
definirá o atributo integer nessas variáveis. Após as atribuições que tentam definir valores não inteiros para essas variáveis, haverá um erro.
Mas o seu problema é com a sintaxe. Ao usar o valor de uma variável, você deve prefixar seu nome com $
:
if [ "$var1" -lt "$var2" ]; then
echo "$var1 is lt $var2"
else
echo "$var2 is lt $var1"
fi
Exceções são as avaliações aritméticas, onde não há necessidade de $
:
if ((var1<var2)); then
echo "$var1 is lt $var2"
else
echo "$var2 is lt $var1"
fi
Como uma palavra de advertência, dentro de [
.. ]
sempre duplique as suas variáveis para evitar que a expansão das palavras atrapalhe a sintaxe da sua expressão. (Quero dizer, você terá problemas com variáveis não definidas, variáveis contendo cadeia vazia e variáveis contendo IFS
caracteres.) Ou você pode usar o mais novo e melhor [[
.. ]]
em vez disso, manipula corretamente tais casos:
if [[ $var1 -lt $var2 ]]; then
echo "$var1 is lt $var2"
else
echo "$var2 is lt $var1"
fi