다음과 같은 명령이 있습니다.
#!/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 스크립트 또는 둘 다에서 문제를 일으킬 수 있는 잠재적인 문제의 전체 클래스를 제거하기 때문입니다.