为我的问题提供背景。我正在尝试移动一个文件列表,如果分辨率大于3.00,那么移动到一个目录Above3。
#!/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我得到的错误是“整数表达式预期”,我不知道如何修复。任何关于解决方案的建议都将不胜感激。
发布于 2021-05-25 14:02:02
3.00是一个浮动值。Bash不能处理浮点值,只能处理整数,因此出现错误消息。
你可以把它当作一个字符串,并按字母顺序比较,如果你能得到固定格式的数字(例如小数点之后的两位数字)。
但我建议您使用命令bc,它专门用于计算:
if [ $(bc <<< "$resolution > 3.00") == 1 ] ; then
mv $f $Above3
fi脚本(作为摘要)是什么?
剧本是什么?
中与*.ent对应的所有文件
中。
如果/mnt/d/Documents/Research/PhD/PhD/Research/Results/PDB/New/XRD/Above3大于3.00,则将相应的文件( *.ent文件之一)移动到目录$resolution中
然后,
匹配的下一个文件。
https://stackoverflow.com/questions/67689271
复制相似问题