浮点数来自输出字符串。这是我的示例代码:
#!/bin/bash
output="0.15 0.11"
cputime=${output[0]}
gputime=${output[1]}
echo $cputime $gputime
diff=`echo "$cputime - $gputime" | bc`
echo $diff
答案 0 :(得分:3)
您可以使用以下代码更好地编写用于分隔值的代码:
#!/bin/bash
output="0.15 0.11"
cputime=${output%% *}
gputime=${output##* }
diff=$(echo "$cputime - $gputime" | bc)
echo $diff
##
和%%
分别是removal-of-longest-prefix
和removal-of-longest-suffix
运算符,删除了从第一个空格开始的所有内容(<space>*
)或所有内容到最后一个空格(*<space>
)。
当前代码不起作用的原因是因为$output
不是一个数组,其中两个值位于不同的索引中,因为它会像你做的那样:
output=("0.15" "0.11")
或者,既然您已经调用了外部可执行文件bc
,那么您可以通过添加awk
魔法来缩短代码:
#!/bin/bash
output="0.15 0.11"
diff=$(awk '{print $1 - $2}' <<< "$output" | bc)
echo "$diff"
答案 1 :(得分:2)
假设值由单个空格分隔:
$ echo "$output"
0.15 0.11
$ tr ' ' - <<< "$output" | bc -l
.04