2015-01-02 2 views
3
#!/bin/bash 

z=`echo "$a*(1+($p/(100*$g)))^((($j)+($m/12)+($t/365))*$g)" | wcalc -EE` 
y=`echo read$z/$k^2 | wcalc` 
echo $y 

Моя вторая линия делает калорийность $z/($k^2), но мне нужно ($z/$k)^2 как это сделать?Как получить значение в круглых скобках?

+2

Ум ... может быть, «эхо» ($ z/$ k)^2 "| wcalc'? Не уверен, что такое лишняя вещь 'read' есть ... – twalberg

ответ

3

Проблема, как я понимаю, что z не является числом, но что-то в виде = 1.2345 (то есть, строка с = перед номером). Я думаю, что самый лучший способ сделать эту работу - сделать z номер. К сожалению, не представляется wcalc иметь возможность для этого, так что я бы прибегнуть к помощи awk:

#             here, at the end ------v 
z=`echo "$a*(1+($p/(100*$g)))^((($j)+($m/12)+($t/365))*$g)" | wcalc -EE | awk '{ print $2 }'` 
y=`echo "read = ($z/$k)^2" | wcalc` # and perhaps apply a similar transformation here. 
echo "$y" 

Примите к сведению, что wcalc не будет помнить задание read, хотя, потому что процесс немедленно заканчивается. Я не знаю, чего вы хотите достичь.

+0

Как' 1.2345' не число? – glglgl

+0

В 'wcalc' есть' = 'перед этим. 'read $ z/$ k^2' расширяется до типа' read = 1/2^2'. Я отредактировал ответ для ясности. – Wintermute