非常简单的脚本,但我遇到了问题。它不会比较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:非法字符:$ “没那么快”
答案 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
,那么您至少可以设法设置x
和y
。然后,您可以使用bc
来比较浮点值:
if (( $(bc <<<"$x > $y") )); then
这里使用(( ... ))
条件计算来测试其中的数值表达式是否为非零。