web-dev-qa-db-ja.com

不正なフロート値「エラー」cシェル

いくつかのテキストボックスで作成されたフォームがあります。このフォームでは、浮動小数点数を入力し、この数値を使用して他のテキストボックスと合計し、結果をラベルに入れます。

次に、テキストボックスの値を変数(xbizおよびxbder)に入力し、それを合計すると、次の結果が得られます:xbiz = 5.2 xbder = 2.3

私の問題は、テキストボックスの1つが空の場合です(空白)スクリプトは「ILLEGALFLOATVALUE!」というエラーを表示します。つまり、2つの変数に値が入力されていない場合od

この問題をどのように解決できますか?

これが私のコードです:

#FORM
echo "FG 999999" >> $gui_in
echo "FONT cbr18" >> $gui_in
echo "BG 901010" >> $gui_in
echo "LABEL LOCATINES" >> $gui_in
echo "FG 101090" >> $gui_in
echo "FONT cbr18" >> $gui_in
echo "BG 708787" >> $gui_in

echo "TEXT xbiz X_BOT_IZQ" >> $gui_in
echo "TEXT xbder X_BOT_DER" >> $gui_in

#Calculation
set varx = `echo " $xbder + $xbiz" | bc -l`


#After calculate the values of the two variables (xbder + xbiz) I use the result in the following line:

COM display_layer,name=comp,display=yes,number=1
COM add_pad,attributes=no,**x=${varx},y=${varx}**,symbol=${sizefido},polarity=positive,\
angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
1
Dany

xbizまたはxbderが空の場合、bcは文句を言います(ここでbash)

$ echo "5.2 + " | bc -l
(standard_in) 2: syntax error

あなたは(テストされていない)のようなものが必要になるでしょう

if (! $?xbiz) set xbiz = 0
set varx = `echo " 5.2 + $xbiz" | bc -l`
if (! $?xbder) set xbder = 0
set vary = `echo " 5.2 + $xbder" | bc -l`
1
glenn jackman