Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash比较整数和十进制错误_Bash_Shell_Sh - Fatal编程技术网

Bash比较整数和十进制错误

Bash比较整数和十进制错误,bash,shell,sh,Bash,Shell,Sh,我有一个bash脚本,在其中我试图比较一个包含整数的变量 VAR1=1 要比较的实数可以是十进制数 VAR2=1.5 当我尝试时: if [[ $VAR1 -ge $VAR2]]; 我遇到一个语法错误:算术运算符无效 问题是,当我尝试=字符串比较时,无论逻辑上是否正确,结果总是错误的 我的问题是,如何解决这个问题并进行算术比较 代码块 如果[$(bc-lbash不支持浮点运算。您可以使用bc: if [ $(bc --mathlib <<< "$var1 >= $

我有一个bash脚本,在其中我试图比较一个包含整数的变量

VAR1=1
要比较的实数可以是十进制数

VAR2=1.5
当我尝试时:

if [[ $VAR1 -ge $VAR2]];
我遇到一个
语法错误:算术运算符无效

问题是,当我尝试
=
字符串比较时,无论逻辑上是否正确,结果总是错误的

我的问题是,如何解决这个问题并进行算术比较

代码块
如果[$(bc-l
bash
不支持浮点运算。您可以使用
bc

if  [ $(bc --mathlib <<< "$var1 >= $var2") = "1" ] ; then
    echo "$var2 is greater than or equal to $var2"
fi

如果[$(bc--mathlib
bash
不支持浮点操作,则可以为此使用
bc

if  [ $(bc --mathlib <<< "$var1 >= $var2") = "1" ] ; then
    echo "$var2 is greater than or equal to $var2"
fi

if[$(bc--mathlibBash不支持浮点数

请尝试使用卑诗省
bc

(( $(bc -l <<<"$v1 >= $v2") )) && echo "v1 is greater than or equal to v2"
对于您问题中的示例,您可以使用以下内容:

if (( $(bc -l <<<"$CPUUSAGE >= $MAXCPU || $FREEMEM <= $MAXMEM") )) || [[ $NUMHTTPD -ge $MAXHTTPD || $NUMMYSQL -ge $MAXMYSQL || $NUMPROCS -ge $MAXPROCESSES ]]; then echo; fi

if($(bc-lBash不支持浮点数

请尝试使用卑诗省
bc

(( $(bc -l <<<"$v1 >= $v2") )) && echo "v1 is greater than or equal to v2"
对于您问题中的示例,您可以使用以下内容:

if (( $(bc -l <<<"$CPUUSAGE >= $MAXCPU || $FREEMEM <= $MAXMEM") )) || [[ $NUMHTTPD -ge $MAXHTTPD || $NUMMYSQL -ge $MAXMYSQL || $NUMPROCS -ge $MAXPROCESSES ]]; then echo; fi

if($(bc-lAWK也能做到这一点:

#!/bin/sh

VAR1=1
VAR2=1.5

if awk "BEGIN {exit $VAR1 >= $VAR2 ? 0 : 1}"
then 
   echo "$VAR1 is greater than or equal to $VAR2" 
else
   echo "$VAR2 is greater than or equal to $VAR1"
fi

AWK也能做到这一点:

#!/bin/sh

VAR1=1
VAR2=1.5

if awk "BEGIN {exit $VAR1 >= $VAR2 ? 0 : 1}"
then 
   echo "$VAR1 is greater than or equal to $VAR2" 
else
   echo "$VAR2 is greater than or equal to $VAR1"
fi

可能重复的算术上下文的可能重复太棒了!(我的第一个版本甚至不起作用(虽然它已经有两个ups:)@hek2mgl谢谢,我延迟的原因是我在尝试类似于你的帖子的东西,但无法让它们起作用:)现在得到[:缺少`]'and command not found errors,抱歉,我是bash noobt算术上下文很棒!(我的第一个版本甚至无法工作(虽然它已经有两个ups:)@hek2mgl谢谢,我延迟的原因是我尝试了类似于您的帖子的东西,但无法使它们工作:)现在得到[:missing`]'命令未找到错误,抱歉,我是bash noob