Saída dos resultados de um loop aninhado para um arquivo no bash

0

Eu tenho tentado criar um arquivo fora do meu loop no bash, eu fui bem sucedido em gerar o arquivo com o seguinte código

for ((i = 0; i <= 5; i++)); do
  for ((j = i; j <= 5; j++)); do
    echo -e "$i $j" >> numbers.txt
  done 
done

no entanto, quero que meus resultados sejam divulgados da seguinte maneira

 01

 02

 03

etc.

Mas o resultado que estou recebendo é semelhante a este

0 0 1 0 2 0 3 0 4 0 5 1 1 1 2 1 3 1 4 1 5 2 2 2 3 2 4 2 5 3 3 3 4 3 5

Como posso resolver isso?

    
por JavaFreak 24.06.2016 / 21:47

2 respostas

1

bash tem estilo C para loops, mas estilisticamente eles são um pouco estranhos para usar quando você não precisa. E se você realmente tiver , você pode estar usando o idioma errado . (Para este caso de uso, o shell está bem, é claro.)

Uma maneira muito mais shell-like para fazer isso (na minha opinião) é:

for i in {0..5}; do for j in $(seq "$i" 5); do echo "$i$j"; done; done

Aqui está outra abordagem:

(set {0..5}; for i; do for j; do [ "$i" -le "$j" ] && echo "$i$j"; done; done)

Eu os escrevo como one-liners adequados para um shell interativo, mas eles funcionam igualmente bem na forma estruturada (o que normalmente seria preferível em um script):

set {0..5}
for i; do
  for j; do
    [ "$i" -le "$j" ] &&
      printf '%d%d\n' "$i" "$j"
  done
done
    
por 25.06.2016 / 01:45
1
for ((i = 0; i <= 5; i++)); do
  for ((j = i; j <= 5; j++)); do
    echo -e "${i}${j}\n" >> numbers.txt
  done 
done

Deve fazer o truque. Eu removi o espaço, eu prefiro usar {} em torno de minhas variáveis e \n coloca em nova linha.

    
por 24.06.2016 / 22:34

Tags