在 Bash 中,将 bc 传递给变量对我来说不合适

Passing bc into a variable isn't working right for me in Bash

我想我快疯了,我有一个不同的脚本,它可以正常工作,可以将 bc 的输出传递给一个变量,但这个我就是无法工作。

相关的代码是这样的:

PERCENT_MARKUP=".5"

$percentonumber=$(bc -l <<<"$PERCENT_MARKUP/100")
echo "Percent to number = $percentonumber"

$numbertomultiply=$(bc -l <<<"$percentonumber + 1")
echo "Number to multiply = $numbertomultiply"

$MARKUP=$(bc -l <<<"$buyVal * $numbertomultiply")
#$MARKUP=$(bc -l <<<"$buyVal * (1+($PERCENT_MARKUP/100))")
echo "Markup = $MARKUP"

最初,我只有倒数第二行当前被注释掉了,但我将其分解以尝试进行故障排除。

我在尝试 运行 时遇到的错误是:

./sell_zombie_brains: line 65: =.00500000000000000000: command not found

其中 .0050000000000000 被 bc 的输出替换。我什至在文件中的多个点尝试了以下内容,包括在 #!/bin/bash 之后使用和不使用 -l

$test=`bc -l <<<"1"`
echo "$test"
echo
$test=$(bc -l <<<"1")
echo "$test"
echo
$test=$(echo "1"|bc -l)
echo "$test"
echo

每个输出 ./sell_zombie_brains: line 68: =1: command not found

我真的无计可施了。我不知道我在这里错过了什么。任何关于它为何以这种方式表现的见解都将受到赞赏。

您不能使用印记 $ :

来分配变量

而不是

$percentonumber=$()

percentonumber=$()

如果您是 初学者,一些好的开始学习指南:

https://whosebug.com/tags/bash/info
FAQ
Guide
Ref
bash hackers
quotes
Check your script

并避免人们建议说通过 tldp.org 网站学习,tldp bash 指南 - 特别是 ABS)已经过时,在某些情况下完全错误。 BashGuide and the bash-hackers' wiki 更可靠。