【问题标题】:Passing bc into a variable isn't working right for me in Bash在 Bash 中将 bc 传递给变量不适合我
【发布时间】:2020-04-15 16:09:57
【问题描述】:

我觉得我快疯了,我有一个不同的脚本,它可以正常使用将 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

我真的是束手无策。我不知道我在这里错过了什么。任何关于它为什么会这样行为的见解都值得赞赏。

【问题讨论】:

  • 添加一个shebang,然后将您的脚本粘贴到那里:shellcheck.net
  • 谢谢,我会保存的。以后会派上用场的。

标签: bash variables syntax bc


【解决方案1】:

您不能使用符号$ 分配变量:

而不是

$percentonumber=$()

这是

percentonumber=$()

如果您是 初学者,请参考一些开始学习的好建议:

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

并且避免人们建议说要通过 tldp.org 网站学习,尤其是 tldp bash 指南 -ABS)已经过时,在某些情况下完全是错误的。 BashGuidebash-hackers' wiki 要可靠得多。

【讨论】:

  • 不用担心,可能切换语言会出错(我以perl为例)
  • 你给了我太多的信任,哈哈。我只是把它钉在疲倦的眼睛和太多的分心上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-22
  • 1970-01-01
  • 1970-01-01
  • 2013-04-20
  • 2013-10-27
相关资源
最近更新 更多