(...)
inicia um subshell e executa os comandos especificados dentro dele. É por isso que ($num<$var)
gera essa mensagem de erro; não é possível encontrar o arquivo correspondente a $var
para passar para o comando correspondente a $num
.
Você provavelmente queria algo como
while (( num < var )); do
echo "$num"
done
((...))
é uma expansão aritmética. Ele irá calcular o valor da expressão dentro. Neste caso, irá comparar os valores das duas variáveis (o $
na frente deles não é necessário aqui). Se a comparação for verdadeira, então o loop while executará mais uma iteração.
O loop while também é um loop infinito, já que você não incrementa num
nem decrementa var
.
No final, você pode querer tentar
for (( num = 0; num < var; ++num )); do
echo "$num"
done
ou
for (( num = 0; num < var; ++num )); do
printf '%d\n' "$num"
done
Se você conhece C ou uma linguagem com uma sintaxe similar a C, então você reconhecerá esse tipo de loop.