我一直有这个让我疯狂的问题。基本上我使用if语句,当使用python脚本创建的.dat文件中的第一行数据与1进行比较时运行。所以我将它设置为:
t=$(<data.dat)
if [ "$t" -eq "1" ]
then
do something
else
do something else
fi
但它永远不会奏效!我有什么想法我做错了吗?我正在使用shell。此外,这个for循环在while循环中,所以也许我错过了与嵌套有关的东西?
答案 0 :(得分:0)
在bash
生成一个好的输入数据文件,验证它:
echo 1 > data2.dat
hexdump -C data2.dat
......输出:
00000000 31 0a |1.|
00000002
现在在 python 数据输出上运行hexdump -C data.dat
。它将与上面显示的输出相同(即&#39; 31 0a &#39;),或者不同。
如果它是相同的,则问题必须是未指定的做某事然后执行其他 bash
代码的拼写错误或其他错误。如果hexdump
输出不相同,则问题出在 python 代码中。
证明上述输出文件 data2.dat 是好的,不需要进一步过滤。
此bash
代码是正确的:
if [ "$(<data2.dat)" = "1" ]
then
echo yes
else
echo no
fi
输出:
yes
使用&#39; 2 重新测试&#39;而不是&#39; 1 &#39; (单行,与上述相同,但没有hexdump
):
echo 2 > data2.dat; if [ "$(<data2.dat)" -eq "1" ]; then echo yes; else echo no; fi
输出:
no