Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.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
比较Linux中的值_Linux_Bash - Fatal编程技术网

比较Linux中的值

比较Linux中的值,linux,bash,Linux,Bash,我使用的是包含键和值的.conf 某些键包含以下数字: deployment.conf EAR_COUNT=2 EAR_1=xxx.ear EAR_2=yyy.ear # CONF FILE EAR_COUNT=5 当我尝试使用特定键检索该值并与整数值(即自然数)进行比较时 但无论我从.conf中检索到什么值,它都应该是字符串数据类型 我应该如何在LinuxBash脚本中比较这两个值 简单地说:我应该如何比较Linux中的两个值 例: 我发现以下错误: count : 2 : intege

我使用的是包含键和值的.conf

某些键包含以下数字:

deployment.conf

EAR_COUNT=2
EAR_1=xxx.ear
EAR_2=yyy.ear
# CONF FILE 
EAR_COUNT=5
当我尝试使用特定键检索该值并与整数值(即自然数)进行比较时

但无论我从.conf中检索到什么值,它都应该是字符串数据类型

我应该如何在LinuxBash脚本中比较这两个值

简单地说:我应该如何比较Linux中的两个值

例:

我发现以下错误:

count : 2
: integer expression expected30: [: 2
它们都是
bash
中的字符串,尽管您有能力进行
排版
——但请键入不同的内容来标记它们

如果您想进行数字比较,只需使用
-eq
(或者它的兄弟,如
-gt
-le
)而不是
=
=等等:

if [[ $num -eq 42 ]] ; then
    echo Found the answer
fi
比较运算符的完整范围可以在
bash
手册页的
条件表达式下找到

如果你有一些你认为应该是数字的东西,但它不起作用,我保证它不是数字。做一些类似于:

echo "[$count]"
为了确保它的结尾没有换行符,或者更好的是,如果它包含奇怪的字符,比如Windows行的结尾,请获取十六进制转储:

echo -n $count | od -xcb
你看到的事实是:

: integer expression expected30: [: 2
返回到行的开头,而不是更常见的:

-bash: [: XX: integer expression expected
倾向于指示其中存在回车符,可能来自具有这些Windows行结尾的
deployment.conf
\r\n
而不是UNIXy
\n

十六进制转储应该使这一点变得明显,此时您需要去清理配置文件。

Ref:

-等式-ne,-lt,-le,-gt或-ge

  • 这些是bash脚本中的算术二进制运算符
我查过你的密码了

deployment.conf

EAR_COUNT=2
EAR_1=xxx.ear
EAR_2=yyy.ear
# CONF FILE 
EAR_COUNT=5
testArithmetic.sh

#!/bin/bash
. ./deployment.conf

count=$EAR_COUNT;

echo "count : $count";
if [ $count -gt 0 ]; then
    echo "Test"
fi
运行上述脚本的计算结果为数值比较。如果您遇到任何问题,请与我们分享您的conf文件内容。如果要在脚本文件中包含conf文件,请注意conf文件必须具有有效的BASH赋值,这意味着“=”符号前后不应有空格


另外,您在conf部分提到了WAR\u COUNT=3,并使用了'COUNT=$EAR\u COUNT;'在脚本部分。请检查此项。

EAR\u COUNT
变量中很可能有一些非整数字符,如
\r
在分配给
计数时去除所有非数字,如下所示:

count=${EAR_COUNT//[^[:digit:]]/}

echo "count : $count";
if [[ $count -gt 0 ]]; then
    echo "Test"
fi

不清楚字符串和整数是什么意思。你能添加一些例子吗?'-gt'也是数值比较运算符。@ManikandarajS:因此短语
或其兄弟
。ashokhein自己使用了数值比较运算符'-gt'-“if[$count-gt 0];然后“@paxdiablo我得到以下错误。。。count:2:integer expression expected30:[:2–@ashokhein,那么它不是一个数字。我已经添加了一些关于如何检查此项的建议。正在进行更新。我收到以下错误…count:2:integer expression expected30:[: 2@ashokhein我已尝试了您发布的代码,效果很好。请尝试从此处下载,您必须在EAR\u COUNT变量中添加一些\r或\n字符,