Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以浮点数为字符串在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 - Fatal编程技术网

以浮点数为字符串在Bash中实现算术 我有以下BASH代码,它运行一个C++二进制( /代码< /COD>),并存储结果: #!/bin/bash output=$(./code /); read -ra arr -d '' <<<"$output" value=${arr[-1]} sum=$value+1.034 echo $sum

以浮点数为字符串在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

Bash不支持浮点运算。您需要另一个程序为您计算。
下面是使用
bc
awk
或GNU
datamash
的三个示例:

#!/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")