Exibe os números filtrados em um loop for e com uma instrução if

0

Saída desejada: todos os números maiores que 5.

Uma das poucas tentativas:

for i in {1..10}; do if ["$i" > 5]; then echo $i; fi; done

Mas a saída é:

-bash: [1: command not found
-bash: [2: command not found
-bash: [3: command not found
-bash: [4: command not found
-bash: [5: command not found
-bash: [6: command not found
-bash: [7: command not found
-bash: [8: command not found
-bash: [9: command not found
-bash: [10: command not found

O que está faltando?

    
por Sun 13.10.2015 / 18:59

3 respostas

1

Espaços e -gt

user1@machine:~/tmp$ for i in {1..10}; do if  [ $i -gt 5 ]; then echo $i; fi; done
6
7
8
9
10
    
por 13.10.2015 / 19:08
0

Se você estiver lidando estritamente com números inteiros, também poderá usar a expansão aritmética do bash :

$ for i in {1..10}; do if ((i>5)); then echo $i; fi; done
6
7
8
9
10
$ 
    
por 13.10.2015 / 20:05
0
i=0
while case $((i+=1)) in
      ([6-9])
          echo "$i";;
      (??)
          ! echo "$i"
      esac
do :; done
    
por 13.10.2015 / 20:09

Tags