Bash 需要整数表达式;移动文件时出错

Bash 需要整数表达式;移动文件时出错,bash,Bash,为我的问题提供背景。我正在尝试移动文件列表,如果分辨率大于3.00,则移动到3以上的目录 #!/bin/bash files=`ls *.ent` Above3=/mnt/d/Documents/Research/PhD/PhD/Research/Results/PDB/New/XRD/Above3 for f in $files; do resolution=`cat $f | grep "REMARK 2 RESOLUTION." | awk '{p

为我的问题提供背景。我正在尝试移动文件列表,如果分辨率大于3.00,则移动到3以上的目录

#!/bin/bash

files=`ls *.ent`
Above3=/mnt/d/Documents/Research/PhD/PhD/Research/Results/PDB/New/XRD/Above3
for f in $files; do
        resolution=`cat $f | grep "REMARK   2 RESOLUTION." | awk '{print $4}' | tr -d ' '`
        if [ $resolution -gt 3.00 ] ; then
        mv $f $Above3
        fi
done

我得到的错误是“需要整数表达式”,我不知道如何修复。如果您对解决方案有任何建议,我们将不胜感激。

3.00是一个浮动值。Bash无法处理浮点值,只能处理整数,因此会显示错误消息

如果可以以固定格式(例如小数点后有两位数字)获取数字,则可以将其视为字符串并按字母顺序进行比较

但我建议您使用命令bc,该命令专门用于计算:

if [ $(bc <<< "$resolution > 3.00") == 1 ] ; then
    mv $f $Above3
fi

if[$(bc)您的脚本有多个问题。请检查您的脚本。我可以问一下我在邮件中回复了什么吗,因为我无法格式化注释中的任何文本…而且注释的大小非常有限