bash -bc curl比较变量

时间:2015-10-13 19:38:00

标签: bash comparison-operators bc

非常简单的脚本,但我遇到了问题。它不会比较2个变量,这是由于浮点还是?我试着用|但仍然没有工作...

    #!/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

更新代码:         #!/斌/庆典

    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:非法字符:$ “没那么快”

1 个答案:

答案 0 :(得分:1)

cmd | bc表示“将cmd的输出重定向到实用程序bc。它不是用于声明数字的模糊shell语法。

例如,

y=.5 | bc

执行命令y=.5(将名为y的局部变量设置为字符串.5),该命令不产生任何输出,然后将其输入bc。由于bc没有收到任何输入,因此它不会产生任何输出。此外,当左侧命令终止时,变量y消失。

类似地,

x=$(curl ...) | bc

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

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

if (( $(bc <<<"$x > $y") )); then

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