for 루프를 사용하여 디렉터리 내의 여러 파일에서 수학적 계산 수행

for 루프를 사용하여 디렉터리 내의 여러 파일에서 수학적 계산 수행

디렉터리에 있는 일부 csv 파일에 대해 입력으로 사용하여 몇 가지 수학적 계산을 수행하고 싶습니다. 파일은 무작위로 지정되므로 정적 이름을 사용하는 것은 옵션이 아닙니다. 또한 요구 사항은 csv 시트의 첫 번째와 마지막 숫자를 사용하여 실제 숫자 시퀀스를 생성하고 시트의 실제 행 수를 읽은 다음 누락된 시퀀스의 백분율을 계산하는 것입니다. For 루프를 사용하여 파일을 읽고, 시퀀스를 생성하고, wc -l행 수를 계산하고, 이를 임시 파일(total.csv)에 저장한 다음 백분율 계산을 수행합니다. 경우에 따라 워크시트에 행이 하나만 있을 수 있으므로 이를 고려해야 합니다. 이 경우 누락된 백분율은 0이 되어야 하므로 For 루프 내에서 If 조건을 사용합니다. 마지막으로 임시(total.csv) 파일을 삭제했으며 루프는 디렉터리의 모든 csv 파일을 계속 처리합니다. 이것이 제가하는 것입니다.

FILES=$dir/*.csv
for f in $FILES;
do
        var1=$(cat $f | wc -l)
        var2=$(cut -d ',' -f7 $f | head -n 1)
        var3=$(cut -d ',' -f1 $f | head -n 1)
        seq1=$(head -n 3 $f)
        seq2=$(tail -n 3 $f)
        if [ "$seq2" -gt "$seq1" ]; then
        seq $seq1 1 $seq2 | cat > $dir/../total.csv
        total=$(cat $dir/../total | wc -l)
        actual=$(cat $f | wc -l)
        missing=$(expr $total - $actual)
        percentage=$((100*missing/total))
        echo "missing percentage of var1 and var2 is $percentage:"
        rm $dir/total.csv
        else
        echo "Loss percentage is 0"
        fi

done

위 스크립트는 파일을 읽지만 시퀀스를 생성하는 동안 오류가 발생합니다. 이 오류의 숫자는 내 입력 csv 파일의 첫 번째 줄입니다.

./test.sh: line 22: [: 9,-60,18240,28,0,1517400128,2356,0,0,0,0,551: integer expression expected

나는이 문제에 갇혀 있고 그것을 알아낼 수 없습니다. 위의 요구 사항을 달성하기 위한 더 나은 메커니즘이 있습니까? 미리 감사드립니다.

관련 정보