kim*_*221 0 linux bash comparison integer
我正在尝试在 bash 中执行简单的整数比较,我是新使用的,并且我的方法导致错误。任何意见,将不胜感激。
我的基本逻辑是我正在阅读飓风轨迹点。同一 track_id 可能有多个具有不同压力值的条目。我想要做的是将每个 track_id 仅存储一个条目到数组 track_id_poly 中;压力最低的情况。因此,我循环遍历每一行,并尝试将当前压力(对于 $int)与先前的轨道压力($int - 1)进行比较,如果它较低,则用新的较低压力替换先前的数组值。我希望这是有道理的。我的代码如下。
int=0
while read track_id ppres_inter
do
printf -v pres_inter "%.0f" "$pres_inter"
echo pressure $pres_inter
case $int in
0)
Track_id_poly[$int]=$track_id
Pres_inter_poly[$int]=$pres_inter
((int=int+1)) ;;
*)
if [[ $track_id == ${Track_id_poly[$int-1]} ]]
then
if (( $pres_inter -lt ${Pres_inter_poly[$int-1]} ))
then
Track_id_poly[$int-1]=$track_id
Pres_inter_poly[$int-1]=$pres_inter
fi
else
Track_id_poly[$int]=$track_id
Pres_inter_poly[$int]=$pres_inter
((int=int+1))
fi ;;
esac
done <$file_poly
int_poly=$int
echo Number of polygon crossings from set $i is $int_poly
Run Code Online (Sandbox Code Playgroud)
给我带来问题的行是 $pres_inter 的整数比较。
if (( $pres_inter -lt ${Pres_inter_poly[$int-1]} ))
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
line 41: 96800 -lt 98759 : syntax error in expression (error token is "98759 ")
Run Code Online (Sandbox Code Playgroud)
任何解决此问题的提示将不胜感激。可能是一个简单的修复!
该((...))运算符不接受与test、[..]、 或[[...]]命令相同的语法。要比较 中的两个数字((...)),您可以使用实际的>或<符号:
$ (( 4 > 2 )) && echo '4 is bigger!'
4 is bigger!
Run Code Online (Sandbox Code Playgroud)
请参阅手册页ARITHMETIC EVALUATION的 参考资料 部分bash(1)以获取更多信息(或此处)。
| 归档时间: |
|
| 查看次数: |
764 次 |
| 最近记录: |