我正在尝试编写一个基本脚本来计算圆的半径和面积,其中PI = 3.14,并给出了圆周。我对脚本非常陌生,我似乎无法解决这个问题。
#!/bin/bash
PI=3.14
CIRC=5
RAD=echo "((CIRC/2*PI))" | bc-l
printf "Radius: %.2f" $RAD
AREA=echo "((PI*RAD**2))" | bc-l
printf "Area: %.2f" $AREA
两个方程的总和没有存储在那些变量中,我不知道为什么。我希望有人可以帮忙解释一下。
答案 0 :(得分:5)
下面的脚本会这样做:
#!/bin/bash
pi=3.14
circ=5
rad=$( echo "scale=2;$circ / (2 * $pi)" | bc )
printf "Radius: %.2f\n" $rad
area=$( echo "scale=2;$pi * $rad * $rad" | bc )
printf "Area: %.2f\n" $area
备注强>
scale
bc
控制精度,请检查[ this ]。答案 1 :(得分:4)
由于bc
可以打印字符串,因此不需要printf
。也不是反叛或$()
,甚至是一些变量。使用bash
,echo
可以替换为<<<
:
#!/bin/bash
PI=3.14
CIRC=5
bc <<< "scale=2; r=$CIRC/(2*$PI)
print "'"Radius: ", r, "\nArea: ", '"$PI"'*(r^2), "\n"'
POSIX shell代码版本,使用此处文档:
#!/bin/sh
PI=3.14
CIRC=5
bc << snip
scale=2; r=$CIRC/(2*$PI)
print "Radius: ", r, "\nArea: ", $PI * (r^2), "\n"
snip
纯bc
:
#!/usr/bin/bc -q
pi=3.14; circ=5; scale=2; r=circ/(2*pi)
print "Radius: ", r, "\nArea: ", pi*(r^2), "\n"
quit