変数が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ビットの数学で表すことができると想定しています。64ビットでコンパイルした場合、bashは((2 ** 63)-1)未満の整数に制限されます。そのような制限のないbcとの唯一の違いになります。