非常简单的脚本,但我有它的问题。它不会比较两个变量,这是由于浮点数还是?我试着使用| bc,但还是不能工作...
#!/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
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:非法字符:$“没有那么快”
发布于 2015-10-14 03:50:51
cmd | bc的意思是“将cmd的输出重定向到实用程序bc中。这不是一个用于声明数字的晦涩的外壳语法。
例如,
y=.5 | bc执行命令y=.5 (将名为y的本地变量设置为字符串.5),该命令不会生成输出,然后将输出提供给bc。由于bc不接收任何输入,因此不会产生任何输出。此外,当左边的命令终止时,变量y将消失。
类似地,
x=$(curl ...) | bc将名为x的局部变量设置为curl命令的输出(使用命令替换语法)。同样,赋值不产生任何输出,bc不接收任何输入,因此什么也不做,x变量消失。
如果从这两个赋值中删除|bc,那么您至少可以设置x和y。然后可以使用bc比较浮点值:
if (( $(bc <<<"$x > $y") )); then这里使用(( ... ))条件计算来测试其中的数值表达式是否为非零。
https://stackoverflow.com/questions/33111191
复制相似问题