在shell脚本中划分双精度shell变量

时间:2014-06-08 06:35:57

标签: bash shell double division

我正在使用Linux上的shell脚本。

我有两个双变量,我想将它们分开,并将结果放入另一个变量。

我尝试了以下(不起作用):

#!/bin/bash
A=333.33
B=111.11
C="$A / $B" | bc -l

虽然以下方法有效:

#!/bin/bash
A=333.33
B=111.11
echo "$A / $B" | bc -l

我做错了什么?

由于 马特

4 个答案:

答案 0 :(得分:2)

管道适用于输出流,并且:

C="$A / $B" | bc -l

不会将"$A / $B"发送到输出流,而只是发送一个eof。

你可以这样做:

C=$(echo "$A / $B" | bc -l)

将结果导入C

答案 1 :(得分:0)

" $ A / $ B"只是一个字符串,所以管道(|)到" bc -l"不起作用。管道连接" stdout来自一个进程与stdin在另一个进程上。 echo" $ A / $ B"另一方面,将字符串的值传递给stdout,管道将它传递给bc的stdin,它按预期工作。

答案 2 :(得分:0)

使用管道时,必须推送输出:

commandA|commandB

commandA输出在管道中推送并由commandB处理。因此commandA必须在管道处理的stdout流中打印输出。

所以你可以改用:

C=$(echo "$A / $B"|bc -l)
# or
C=`echo "$A / $B"|bc -l`
# or
C=$(bc -l <<< "$A / $B")
# or 
C=`bc -l <<< "$A / $B"`

如果要将结果设置为变量。

答案 3 :(得分:0)

这是工作版本:

#!/bin/bash
A=333.33
B=111.11
C=`bc -l <<< "$A/$B"`
echo $C