在bash中使用if循环的布尔比较时出现问题-->;我相信这与数据类型有关

在bash中使用if循环的布尔比较时出现问题-->;我相信这与数据类型有关,bash,shell,Bash,Shell,我一直有一个让我发疯的问题。基本上,我使用的是一个if语句,当使用python脚本创建的.dat文件的第一行中的一段数据与1进行比较时,该语句就会运行。所以我把它设置成这样: t=$(<data.dat) if [ "$t" -eq "1" ] then do something else do something else fi t=$(在bash中生成一个好的输入数据文件,验证它: echo 1 > data2.dat hexdump -C data2.dat

我一直有一个让我发疯的问题。基本上,我使用的是一个if语句,当使用python脚本创建的.dat文件的第一行中的一段数据与1进行比较时,该语句就会运行。所以我把它设置成这样:

t=$(<data.dat)
if [ "$t" -eq "1" ]
then
    do something
else
    do something else
fi

t=$(在
bash
中生成一个好的输入数据文件,验证它:

echo 1 > data2.dat
hexdump -C data2.dat
…其输出:

00000000  31 0a                                             |1.|
00000002
现在在python数据输出上运行
hextump-C data.dat
。它要么与上面显示的输出相同(即“31 0a”),要么不同。 如果是相同的,那么问题一定是输入错误或其他错误,在未指定的dosomething中,然后执行其他
bash
代码。如果
hextump
输出不相同,则问题出在python代码中

证明上述输出文件data2.dat良好,并且不需要进一步过滤

bash
代码正确:

if [ "$(<data2.dat)" = "1" ]
then
  echo yes
else
  echo no
fi
用“2”而不是“1”重新测试(一行,同上,但没有
hextump
):


Eep!我实际上指的是
如果[“$t”-eq“1”]
,在我原来的帖子中输入了错误的内容。所以我遇到的问题是
“$t”
如果您在读入$t后
回显$t
,它是否包含您期望的内容?是的,由于某些原因,它仍然不起作用。由于If语句嵌套在while循环中,是否有什么需要特别注意的地方?也许问题出在未发布的代码部分?可能是
data.dat整数比较失败的输出。
echo“$t”| cat-A
的输出是什么?
yes
echo 2 > data2.dat; if [ "$(<data2.dat)" -eq "1" ]; then  echo yes; else echo no; fi
no