我想编写一个bash脚本来遍历目录中的所有文件并计算一些分数。我的目录中有100个文件,我想计算1、2、1、3,...,1、100、2、3、2、4,...,2、100,...,99的分数100,并将结果保存在文件中。我已经有了用于计算分数的软件包-以下代码中的score_function:
#!/bin/bash
for file1,file2 in ~/My_directory/*
do
while file2 > file1
do
score_function file1 file2
done >my_outputfile.txt
但是我不确定为什么这行不通,有人知道吗?我得到的错误是:
line 9: syntax error: unexpected end of file
答案 0 :(得分:2)
首先,由于您从未关闭循环,因此遇到了语法错误。
在bash中,您以do开始循环,并以done结束循环,但是您有两个do,只有一个完成,因此语法错误。
此外,我建议您使用两个单独的for循环(一个用于第一个文件,另一个用于其他文件),并且应该继续进行。
类似的东西(用伪代码)
for comparingFile in directory; do
for comparedFile in directory; do
score=0
if [[ "${comparingFile}" -ne "${comparedFile}" ]]; then
score="$(score_function ${comparingFile} ${comparedFile})"
echo "Compared ${comparingFile} to ${comparedFile}. Score: ${score}"
fi
done
done > output.txt