변수의 부동 소수점 수 오류

변수의 부동 소수점 수 오류

다음과 같은 명령이 있습니다.

#!/bin/bash

echo how many GİBs
read n
echo $n GİBs = $a GBs

a=$(awk "BEGIN {print 1.073741824*$n; exit}")

그러나 다음과 같은 출력을 제공합니다.

how many GİBs
12
12 GİBs = GBs

이 문제를 어떻게 해결할 수 있나요?

답변1

awk를 사용하여 -v설정바꾸다. 예를 들어, awk의 값을 nbash의 값과 동일한 값으로 설정하십시오.$n-v n="$n"

$ n=10
$ a=$(awk -v n="$n" 'BEGIN{ print  1.073741824*n; exit}')
$ echo $a
10.7374

awk 스크립트에서 큰따옴표를 사용하여 bash 변수를 직접 사용하는 대신 이 작업을 수행하는 이유는 무엇입니까?

bash 스크립트나 awk 스크립트 또는 둘 다에 문제를 일으킬 수 있는 잠재적인 문제의 전체 클래스를 제거하기 때문입니다.

관련 정보