쉘 스크립트를 사용하여 두 개의 부동 소수점 숫자 추가

쉘 스크립트를 사용하여 두 개의 부동 소수점 숫자 추가

쉘 스크립트를 사용하여 두 개의 부동 소수점 숫자를 추가하려고 합니다. 나는 이것을 시도했습니다 :

#!/bin/bash
if [ $# != 2 ]; then
    echo "2 arguments are required "
    exit
else
    x=$1
    y=$2
    sum = $x + $y
    echo ` sum = $sum | bc `
fi

예를 들어 명령줄에 두 개의 매개변수를 제공하면 다음과 같습니다.

bash filename.sh 2.4 5

...오류가 발생합니다.[ 2 != 2 ] command not found

답변1

else
    echo -n "sum = "
    echo "$1 + $2" | bc
fi

해결되지 않은 문제의 후반부를 해결해 드립니다. 첫 번째 질문은 미스터리입니다. " ["는 내장 명령이므로 따옴표가 없으면 표시되지 않습니다. [ $# != 2 ]단어로 작동하는 방식을 이해할 수 없습니다.

답변2

사용 bc:

    #!/bin/bash
    n="$@" 
    bc <<< "${n// /+}"

스크립트가 호출된다고 가정 add하거나, 코드를 쉽게 붙여넣기를 원하는 사람들을 위해 다음 셸 유사 함수를 사용해 보세요 add() { n="$@"; bc <<< "${n// /+}"; }. 함수와 스크립트는 다음과 같이 작동합니다.

add 3.2 5.5
add 3.2 5.5 8.9
add {1..51}.{12..89}

사용된 교정기bash버팀대 확장bc다음 범위의 십진수로 해석되는 약 4000개의 문자열을 생성합니다.1.12도착하다51.89.

산출:

8.7
17.6
105436.89

두 매개변수를 모두 확인할 필요는 없습니다.

  • 그것은 추가될 수 있다하나또는 그 이상의 인수,

  • 인수가 없으면 출력이 반환되지 않습니다.

  • 일반 문자열을 무시하므로 add 5 6.7 abc edf 9를 반환합니다 20.7.

  • 숫자가 올바르지 않으면 구문 오류를 반환합니다.예를 들어: 9z, 5.6.7, 8..,등.

답변3

두 개의 부동 소수점 숫자를 추가하는 데 사용합니다.

echo 12.8 12.2 | awk '{print $1 + $2}'

Result:- 25

숫자를 변수로 바꾸십시오.

당신은 그것을 사용할 수 있습니다

awk "BEGIN {print 12.8+12.2; exit}"

답변4

if [ "$#" != 2 ]; then
   echo "2 arguments are required"; exit 1
else
   x=$1 y=$2
   sum="[sum=]n $x $y + 2k p"
   echo "$sum" | dc
fi

결과:

sum=7.4

설명하다:

We use the `dc` calculator by placing the two operands on the stack and
adding the two top of stack elements. And prior to adding, we place a
string `sum=` on the stack, and immediately print it which as a side effect
also removes it from the stack. The precision of the results is set to 2.

관련 정보