저는 초보자이고 스크립트("for" 루프)를 작성하고 싶습니다.
- 요청번호
- 숫자에 2를 곱하고 원래 별표로 시작하여 다음과 같이 표시됩니다. (예: 숫자는 4입니다.)
********
******
****
**
****
******
********
답변1
#!/bin/bash
read -p 'Number please: ' n
{
for (( i=0; i<n-1; ++i )); do
printf '%*.*d\n' "$(( 2*n-i ))" "$(( 2*(n-i) ))" 0
done
for (( i=n-1; i>=0; --i )); do
printf '%*.*d\n' "$(( 2*n-i ))" "$(( 2*(n-i) ))" 0
done
} | tr 0 '*'
위 스크립트는 사용자의 번호를 변수로 읽어옵니다 n
. 그런 다음 두 개의 산술 루프로 모양을 만듭니다 for
.
첫 번째 루프는 모양의 위쪽 절반을 만들고, 두 번째 루프는 **
모양의 중간과 아래쪽 절반을 만듭니다.
각 루프의 명령문은 동일하며 printf
루프 변수의 값만 변경됩니다.i
printf
여기서 사용된 형식은 %*.*d
"첫 번째 매개변수에 따라 공간을 할당하고 두 번째 매개변수의 너비로 제로 패딩된 정수를 인쇄한다"는 의미입니다. 인쇄할 실제 정수는 0
(세 번째 매개변수)입니다. 주어진 첫 번째와 두 번째 인수는 printf
변경될 때 삼각형을 인쇄하도록 합니다.0
i
그런 다음 를 사용하여 0
해당 문자를 *
문자 로 변경합니다 tr
.
시험:
$ bash script.sh
Number please: 10
********************
******************
****************
**************
************
**********
********
******
****
**
****
******
********
**********
************
**************
****************
******************
********************
당신은 또한 볼 수 있습니다 man printf
.