shell脚本变量值

发布于 2024-11-07 07:09:58 字数 206 浏览 1 评论 0原文

我在文件中写入了值 0.000000 。我打开该文件并将其分配给一个变量。 但是当我比较它的值时,如 if [ "$var" -eq "0.000000" ] 它的计算结果并不为 true。 可能是什么原因?

此外,如果文件只有 0,并且如果我比较它的值 [ "$var" -eq "0" ] ,它的计算结果将按预期为 true。

I have value 0.000000 written in a file. I open the file and assign it to a variable.
But when i compare it's value like if [ "$var" -eq "0.000000" ] it doesn't evaluate to true.
What could be the reason?

Moreover, if the file has just 0, and if i compare it's value [ "$var" -eq "0" ] it evaluates as expected to true.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

冰雪之触 2024-11-14 07:09:58

正如 Fredrik(为他+1)所说,bash 不支持浮点。如果必须,请使用字符串比较:

if [ "$var" = "0.000000" ]

As Fredrik (+1 for him) said, bash does not support floating point. If you must, use string comparison:

if [ "$var" = "0.000000" ]
反目相谮 2024-11-14 07:09:58

您可以切换到支持浮点运算的 ksh:

$ bash
a=0.00000
[ $a -eq 0 ] && echo ok || echo ko
bash: [: 0.00000: integer expression expected
ko
$ ksh
$ a=0.00000
$ [ $a -eq 0 ] && echo ok || echo ko
ok
$ a=0.00001
$ [ $a -eq 0 ] && echo ok || echo ko
ko

You might switch to ksh which supports floating point arithmetic:

$ bash
a=0.00000
[ $a -eq 0 ] && echo ok || echo ko
bash: [: 0.00000: integer expression expected
ko
$ ksh
$ a=0.00000
$ [ $a -eq 0 ] && echo ok || echo ko
ok
$ a=0.00001
$ [ $a -eq 0 ] && echo ok || echo ko
ko
只是我以为 2024-11-14 07:09:58

bash 无法理解浮点数。尝试使用 bc,如果相等则返回 1,否则返回 0。

if [ $(bc <<< $var==0.000000) -eq 1 ]
then

fi

expr

if [ $(expr $var == 0.000000) -eq 1 ]
then

fi

bash can't understand floats. Try using bc, which will return 1 if the equality is true, 0 otherwise.

if [ $(bc <<< $var==0.000000) -eq 1 ]
then

fi

or expr:

if [ $(expr $var == 0.000000) -eq 1 ]
then

fi
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文