首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >期望整数表达式;移动文件时出错

期望整数表达式;移动文件时出错
EN

Stack Overflow用户
提问于 2021-05-25 13:43:43
回答 1查看 731关注 0票数 2

为我的问题提供背景。我正在尝试移动一个文件列表,如果分辨率大于3.00,那么移动到一个目录Above3。

代码语言:javascript
复制
#!/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

我得到的错误是“整数表达式预期”,我不知道如何修复。任何关于解决方案的建议都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-25 14:02:02

3.00是一个浮动值。Bash不能处理浮点值,只能处理整数,因此出现错误消息。

你可以把它当作一个字符串,并按字母顺序比较,如果你能得到固定格式的数字(例如小数点之后的两位数字)。

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

代码语言:javascript
复制
if [ $(bc <<< "$resolution > 3.00") == 1 ] ; then
    mv $f $Above3
fi

脚本(作为摘要)是什么?

剧本是什么?

  • 接受当前目录

中与*.ent对应的所有文件

  • 它接受包含“备注2分辨率”的所有行。从所有这些文件中获取这些行的第四个字,并将结果放入bash变量$resolution

中。

如果/mnt/d/Documents/Research/PhD/PhD/Research/Results/PDB/New/XRD/Above3大于3.00,则将相应的文件( *.ent文件之一)移动到目录$resolution中

然后,

  • 循环继续处理名称与*.ent

匹配的下一个文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67689271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档