5,4,3,2,1을 인쇄하고 싶습니다.
이것은 내 프로그램이지만 숫자를 세로로 인쇄합니다.
numbers=5
i=1
while [ "$i" -le "$numbers" ]
do
echo “$i”
i=$(( $i + 1 ))
done
나를 도와줄 해결책이 있나요?
답변1
이를 수행하는 방법에는 여러 가지가 있습니다. 다음은 몇 가지입니다.
사용
seq
@Gnouc가 제안한대로.중괄호 확장을 사용하고 공백을 쉼표로 변환합니다.
$ echo {5..1} | sed 's/ /,/g' 5,4,3,2,1
스크립트를 사용하되 카운터를 증가시키는 대신 감소시키도록 변경하고 다음
echo
으로 변경하십시오echo -n
(이것은 bash의 내장에서는 작동echo
하지만 모든echo
구현에서는 작동하지 않습니다).i=5 while [ "$i" -gt 1 ] do echo -n "$i," let i-- done echo "$i"
대신 사용하십시오
printf
:i=5 while [ "$i" -gt 1 ] do printf "%s," "$i" let i-- done printf "%s\n" "$i"
변수 사용:
i=5 v=5 while [ "$i" -gt 1 ] do let i--; v=$v,$i done echo $v
답변2
를 사용하면 seq
다음을 수행할 수 있습니다.
$ seq -s, 5 -1 1
5,4,3,2,1
그리고 perl
솔루션은 이식 가능합니다.
$ perl -e 'print join ",", reverse 1..5'