Вывод результатов вложенного цикла for в файл в bash

Вывод результатов вложенного цикла for в файл в bash

Я пытался создать файл из моего цикла в bash, мне удалось создать файл с помощью следующего кода

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

Однако я хочу, чтобы мои результаты были опубликованы следующим образом

 01

 02

 03

и т. д.

Но результат, который я получаю, похож на этот

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

Как мне решить эту проблему?

решение1

bash имеетЦиклы в стиле C, но стилистически они немного странные, когда их использовать не нужно. И если вы действительно это делаете, то абсолютноиметьк,тымощьиспользовать неправильный язык(Для этого варианта использования shell, конечно, подойдет.)

Гораздо более примитивный способ сделать это (по моему мнению) таков:

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

Вот еще один подход:

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

Я пишу их в виде однострочных кодов, подходящих для интерактивной оболочки, но они одинаково хорошо работают и в структурированной форме (что обычно предпочтительнее в скрипте):

set {0..5}
for i; do
  for j; do
    [ "$i" -le "$j" ] &&
      printf '%d%d\n' "$i" "$j"
  done
done

решение2

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

Должно сработать. Я убрал пробел, я предпочитаю использовать {}' вокруг переменных и \nвставлять на новую строку.

Связанный контент