我正在使用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
我做错了什么?
由于 马特
答案 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