将命令应用于目录中的许多文件,并将输出保存在文件中

时间:2018-08-16 14:05:01

标签: bash command-line

我想编写一个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

1 个答案:

答案 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