【问题标题】:How can i multiply 2 curl outputs together如何将 2 个 curl 输出相乘
【发布时间】:2018-05-17 06:33:36
【问题描述】:

我有这个 Bash Json Parser 的 2 个 API 的输出

curl 'APIxyz' | sed -e 's/[{}]/''/g' |\
  awk -v k="text" '{n=split($0,a,","); for (i=1; i<=n; i++) print a[i]}' |\
  grep -w "total_hash" | cut -c14-100

使用 cut 后,我​​得到了正确的数字(如 15.25),但我如何使用 2 次 curl 并将其相乘,宁愿不使用额外的 SH 脚本,这在 bash 中是否可行?如果怎么做?

【问题讨论】:

  • 将管道的准确输出和所需的输出添加到您的问题中。
  • sed -e 's/[{}]/''/g' 中,'' 完全没有做任何事情,而在awk -v k="text" '{n=split($0,a,","); for (i=1; i&lt;=n; i++) print a[i]}' 中,您根本没有使用变量k,并且您完全使用带有数组的 split()不必要地与仅设置 FS 相比,如果您只想要 1 个数字输出,并且当您已经在使用 awk 时不需要 grep+sed+cut,那么该循环的意义何在。所以 - 你现有的脚本有一些问题,你可能想发布一个新问题来寻求帮助!

标签: bash curl awk


【解决方案1】:

您可以将两个curl 命令的结果存储在变量中, 然后将它们相乘:

v1=$(curl ...)
v2=$(curl ...)

bc <<< "$v1 * $v2"

如果你真的真的需要,你可以写一行:

bc <<< "$(curl ...) * $(curl ...)"

【讨论】:

  • 请帮忙,但是否可以只使用一行?
  • @FlorianStröger 为什么要将它放在一条线上?您的意思是只使用一个curl 而不是两个?
  • 我想在我的 conky 配置中使用它们,并且我不想使用 .conkyrc 以外的其他文件
  • 我用 31.2559 * 17.0796 对其进行了测试,它只输出 .2559 不是算术运算符
  • @FlorianStröger 确实,Bash 在浮点数学方面不太好。请参阅我的更新答案。我还添加了一个写在一行上的解决方案。
猜你喜欢
  • 2016-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多