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