변수가 null이거나 비어있는 경우보고 된 오류가 나타납니다.
$ unset var3 var4; var5=$(($var4-$var3))
bash: -: syntax error: operand expected (error token is "-")
bc에 제공된 값이 올바르지 않기 때문에 발생할 수 있습니다. bc는 대문자 값을 필요로 할 수도 있습니다. 필요 BFCA3000
하지 않습니다 bfca3000
. 그것은 bash에서 쉽게 수정되며 ^^
확장을 사용하십시오 .
var3=bfca3000; var3=`echo "ibase=16; ${var1^^}" | bc`
그러면 스크립트가 다음과 같이 변경됩니다.
#!/bin/bash
var1="bfca3000"
var2="efca3250"
var3="$(echo "ibase=16; ${var1^^}" | bc)"
var4="$(echo "ibase=16; ${var2^^}" | bc)"
var5="$(($var4-$var3))"
echo "Diference $var5"
그러나 bash는 번역과 뺄셈을 직접 수행 할 수 있으므로 bc [1]을 사용할 필요가 없습니다.
#!/bin/bash
var1="bfca3000"
var2="efca3250"
var5="$(( 16#$var2 - 16#$var1 ))"
echo "Diference $var5"
[1] 참고 : 원래 스크립트에서 bash로 차이를 계산 했으므로 값을 64 비트 수학으로 표현할 수 있다고 가정합니다. Bash는 64 비트로 컴파일 된 경우 ((2 ** 63) -1)보다 작은 정수로 제한됩니다. 그것은 그러한 제한이없는 bc와의 유일한 차이점이 될 것입니다.