首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bash -bc curl比较变量

bash -bc curl比较变量
EN

Stack Overflow用户
提问于 2015-10-14 03:38:00
回答 1查看 356关注 0票数 0

非常简单的脚本,但我有它的问题。它不会比较两个变量,这是由于浮点数还是?我试着使用| bc,但还是不能工作...

代码语言:javascript
复制
    #!/bin/bash

    x=$(curl -o /dev/null -s -w %{time_total}\\n  http://www.google.com) | bc
    y=.5 | bc

    if [[ $x -gt $y ]]; then 
        echo “fast”
    else
        echo “not as fast”
    fi

更新代码为:#!/bin/bash

代码语言:javascript
复制
    x=$(curl -o /dev/null -s -w %{time_total}\\n  http://www.google.com)
    y=.5

    if (( $(bc <<<'$x > $y') )); then
        echo “fast”
    else
        echo “not as fast”
    fi

接收错误:(standard_in) 1:非法字符:$ (standard_in) 1:非法字符:$“没有那么快”

EN

回答 1

Stack Overflow用户

发布于 2015-10-14 03:50:51

cmd | bc的意思是“将cmd的输出重定向到实用程序bc中。这不是一个用于声明数字的晦涩的外壳语法。

例如,

代码语言:javascript
复制
y=.5 | bc

执行命令y=.5 (将名为y的本地变量设置为字符串.5),该命令不会生成输出,然后将输出提供给bc。由于bc不接收任何输入,因此不会产生任何输出。此外,当左边的命令终止时,变量y将消失。

类似地,

代码语言:javascript
复制
x=$(curl ...) | bc

将名为x的局部变量设置为curl命令的输出(使用命令替换语法)。同样,赋值不产生任何输出,bc不接收任何输入,因此什么也不做,x变量消失。

如果从这两个赋值中删除|bc,那么您至少可以设置xy。然后可以使用bc比较浮点值:

代码语言:javascript
复制
if (( $(bc <<<"$x > $y") )); then

这里使用(( ... ))条件计算来测试其中的数值表达式是否为非零。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33111191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档