쉘 - expr "곱셈표" 사용

쉘 - expr "곱셈표" 사용

저는 구구단을 만들기 위해 쉘을 배우고 있으며 다음과 같은 코드를 작성합니다.

#!/ in/bash

for i in 1 2 3 4 5 6 7 8 9

do

    for j in 1 2 3 4 5 6 7 8 9
    do
            if [ $j -le $i ]
            then
                    echo -ne "$i"X"$j"=`expr "$i"*"$j"` "\t"
            else
                    echo
                            break
            fi
            done
    done
echo -ne "\n"

하지만 콘솔에 다음과 같은 응답이 표시됩니다.

1X1=1*1
2X1=2*1         2X2=2*2
3X1=3*1         3X2=3*2         3X3=3*3
4X1=4*1         4X2=4*2         4X3=4*3         4X4=4*4
...

대답은 "1x1=1, 2x1=2..."이길 바랍니다. 누구든지 이 코드를 수정하는 방법을 말해 줄 수 있나요?

답변1

네, bash를 사용해도 됩니다내장된 산술 확장 $(( ))간단한 계산을 해보세요.

곱셈의 경우:

echo $(( 6 * 7 ))

결과

42

스크립트는 다음과 같습니다.

#!/ in/bash

for i in 1 2 3 4 5 6 7 8 9

do

    for j in 1 2 3 4 5 6 7 8 9
    do
            if [ $j -le $i ]
            then
                    echo -ne "$i"X"$j"=$(($i * $j)) "\t"
            else
                    echo
                            break
            fi
            done
    done
echo -ne "\n"

답변2

불필요한 테스트를 제거하여 솔루션을 약간 단순화합니다.

#!/bin/bash

for (( i = 1; i < 10; ++i )); do
  for (( j = 1; j <= i; ++j )); do
    printf '%dx%d=%-2d  ' "$i" "$j" "$(( i * j ))"
  done
  printf '\n'
done

관련 정보