Bash比较整数和十进制错误
我有一个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 >= $
VAR1=1
要比较的实数可以是十进制数
VAR2=1.5
当我尝试时:
if [[ $VAR1 -ge $VAR2]];
我遇到一个语法错误:算术运算符无效
问题是,当我尝试=
字符串比较时,无论逻辑上是否正确,结果总是错误的
我的问题是,如何解决这个问题并进行算术比较
代码块
如果[$(bc-lbash
不支持浮点运算。您可以使用bc
:
if [ $(bc --mathlib <<< "$var1 >= $var2") = "1" ] ; then
echo "$var2 is greater than or equal to $var2"
fi
如果[$(bc--mathlibbash
不支持浮点操作,则可以为此使用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