这些函数的作用是卷曲json文件并解析它,其输出是一个数字。
function func() {
curl -Ss -H 'Cache-Control: no-cache' url.com/A?limit=2 | jq -r '.
[] | .[] | .blah'
}
function func2() {
curl -Ss -H 'Cache-Control: no-cache' url.com/B2?limit=2 | jq -r '.
[] | .[] | .blah'
}
function func3() {
curl -Ss -H 'Cache-Control: no-cache' url.com/C3?limit=2 | jq -r '.
[] | .[] | .blah'
}
function example() {
"(($(func) * $(func2) * $(func3)))" | bc -l
}
#result is it echoing the numbers, but not actually doing the math.
#echoing .072*.027 in bc, but no math.
所以我试图做的是通过bash进行浮点运算,这将通过另一个函数引用。唯一的区别是这是功能。 Bash不支持通过bc求解的浮点运算。
示例函数数字输出:
#func output
0.072854 #A
0.072855 #B
0.072828 #C
0.072827 #D
#func2 output
0.027873 #A
0.027884 #B
0.027848 #C
0.027847 #D
#func3 output
0.383170 #A
0.383215 #B
0.381858 #C
0.381857 #D
工作原理,A * A * A =输出1,B * B * B =输出2,C * C * C =输出3
我尝试过的事情:
function blah() {
echo $((func*func2*func3)) | bc -l
}
#result is "0"
echo "$(func) * $(func2) * $(func3)" | bc -l
#result is:
.072965
.072966
.072925
.002030350008
.027856
.027827
.010633768950
.382371
.380995
.380977
答案 0 :(得分:1)
我相信你会希望你的功能如下:
echo "$(func) * $(func2) * $(func3)" | bc -l
编辑:由于您有多个输出值,您可以将它们放入数组中,然后遍历它们并乘以值:
example() {
a=($(func1))
b=($(func2))
c=($(func3))
for i in {0..3} # set to number of values returned
do
echo "${a[i]} * ${b[i]} * ${c[i]}" | bc -l
done
}
根据您的值,输出应为:
.000778087816708140
.000778496988156300
.000774451610799552
.000774411139231933
如果您的func
返回一个值,那么使用带有echo
的{{1}}就足够了。