以浮点数为字符串在Bash中实现算术 我有以下BASH代码,它运行一个C++二进制( /代码< /COD>),并存储结果: #!/bin/bash output=$(./code /); read -ra arr -d '' <<<"$output" value=${arr[-1]} sum=$value+1.034 echo $sum
Bash不支持浮点运算。您需要另一个程序为您计算。以浮点数为字符串在Bash中实现算术 我有以下BASH代码,它运行一个C++二进制( /代码< /COD>),并存储结果: #!/bin/bash output=$(./code /); read -ra arr -d '' <<<"$output" value=${arr[-1]} sum=$value+1.034 echo $sum,bash,shell,sh,Bash,Shell,Sh,Bash不支持浮点运算。您需要另一个程序为您计算。 下面是使用bc、awk或GNUdatamash的三个示例: #!/bin/bash read -ra arr -d '' <<<"$(./code /)" # bc printf '%s + %s\n' "${arr[-1]}" "1.034" | bc # or awk #awk -v val="${arr[-1]}" 'BEGIN{print val + 1.034}' # or datamash #datam
下面是使用
bc
、awk
或GNUdatamash
的三个示例:
#!/bin/bash
read -ra arr -d '' <<<"$(./code /)"
# bc
printf '%s + %s\n' "${arr[-1]}" "1.034" | bc
# or awk
#awk -v val="${arr[-1]}" 'BEGIN{print val + 1.034}'
# or datamash
#datamash sum 1 <<<$(printf '%s\n' "${arr[-1]}" "1.034")
#/bin/bash
read-ra arr-d''Bash不支持浮点数学,而且您在Bash中做的数学操作也不正确。请参阅,以了解如何绕过此缺陷(通常涉及使用bc
或awk
或其他程序),这非常有用。使用awk对我来说很有效。我很好奇,如果我只是想把求和的结果存储在一个变量中,供以后使用,我该怎么做呢?您可以使用命令替换:sum=$(awk-v val=“${arr[-1]}”BEGIN{print val+1.034}')
还有一个问题。如果我有两个bash变量要与awk一起添加,该怎么办?使用-v
选项将两个变量分配给awk
,例如one=“0.5”;两个=“1.1”;sum=$(awk-v var1=“$one”-v var2=“$two”'开始{print var1+var2}')
或者您可以echo
返回值并使用类似管道的sum=$(echo“0.5;1.1”| awk-F'”{print$1+$2}')
#!/bin/bash
read -ra arr -d '' <<<"$(./code /)"
# bc
printf '%s + %s\n' "${arr[-1]}" "1.034" | bc
# or awk
#awk -v val="${arr[-1]}" 'BEGIN{print val + 1.034}'
# or datamash
#datamash sum 1 <<<$(printf '%s\n' "${arr[-1]}" "1.034")