Bash 스크립트는 결과 대신 표현식을 인쇄합니다.

Bash 스크립트는 결과 대신 표현식을 인쇄합니다.

매개변수 개수와 고객이 제공한 첫 번째 매개변수의 곱을 계산하려고 합니다. 여기서 매개변수는 10개와 15개이므로 총 매개변수 개수는 2개입니다. 이제 쉘이 2*10을 실행하기를 원합니다(10이 첫 번째 매개변수이므로). 답변 대신 코드를 받았습니다.

내가 작성한 프로그램:

r=$(echo "$1 \* $#")
echo "Following are the numbers you entered $@ "
echo "first number : $1. and second number: $2."
echo "total number of entered numbers: $#"
echo "expected result: $r"

결과:

root@LAPTOP-J:~# bash test.sh 10 15
Following are the numbers you entered 10 15
first number : 10. and second number: 15.
total number of entered numbers: 2
expected result: 10 \* 2
root@LAPTOP-J5JNFL7K:~#

답변1

글쎄, echo하는 일은 인수로 주어진 문자열을 인쇄하는 것뿐입니다. 메아리처럼 원래의 목소리가 돌아옵니다.

echo foo barPrint foo bar; echo "$var"내용을 인쇄합니다 $var(쉘 확장 값 이후) echo "$1 \* $#". (별표는 큰따옴표 안의 특수 문자가 아니므로 백슬래시가 제거되지 않습니다.)10 \* 2$1$#

expr산술 연산을 수행할 수 있는 것과 혼동할 수 있습니다.

그러나 쉘에서 산술 연산을 수행하기 위해 외부 명령이 필요하지 않습니다. 단지 산술 확장을 사용하면 됩니다 $(( .. )). 예를 들면 다음과 같습니다.

r=$(( $1 * $# ))

그러나 $1숫자가 아닌 다른 것을 포함하면 결과는 홀수일 수 있습니다( $1적어도 Bash에서는 에 포함된 임의의 명령을 실행하는 경우에도 마찬가지입니다). 진지한 작업의 경우 먼저 거기에 있는 값에 대한 온전한 검사를 수행하고 싶을 수도 있습니다.

관련 정보