중첩된 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 스타일 for 루프이지만 스타일상 필요하지 않을 때 사용하는 것은 약간 이상합니다. 진짜로 하면 무조건가지다도착하다,가능한잘못된 언어 사용. (물론 이 사용 사례에서는 셸을 사용하면 됩니다.)

내 생각에는 좀 더 쉘과 유사한 접근 방식은 다음과 같습니다.

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새 줄을 넣는 것을 선호합니다.

관련 정보