다음과 같은 명령이 있습니다.
#!/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의 값을 n
bash의 값과 동일한 값으로 설정하십시오.$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 스크립트 또는 둘 다에 문제를 일으킬 수 있는 잠재적인 문제의 전체 클래스를 제거하기 때문입니다.