13행: 예상치 못한 마커 '(' 근처에 구문 오류가 있습니다.

13행: 예상치 못한 마커 '(' 근처에 구문 오류가 있습니다.

셸을 실행하여 여러 csv 파일을 함께 문자열로 묶고, 연말 전에 이 프로세스를 실행하고 제대로 작동했습니다. 2017을 포함하도록 편집하고 위의 오류가 발생한 후 오늘 실행했습니다.

#!/bin/bash

REPORTS="Product_Report"
YEARS="2014 2015 2016 2017”
MONTHS="01 02 03 04 05 06 07 08 09 10 11 12"

for r in ${REPORTS}; do
    echo "Rebuilding ${r}.csv"
    head -n 1 ${r}.header > ${r}.csv
    for y in ${YEARS}; do
        for m in ${MONTHS}; do
            f="Data/${r}_${y}${m}.csv"
            if [ ! -s "${f}" ]; then echo "Skipping ${f} (not present)"; continue; fi
            tail -n +2 ${f} >> ${r}.csv
            wc -l ${f}
        done
    done
    echo
    wc -l ${r}.csv
done

답변1

변경하는 데 사용된 텍스트 편집기는 예상된 문자열 대신 YEARS 문자열로 끝납니다 ". 이로 인해 파일의 전체 문자열 구분이 엉망이 됩니다. 이는 질문의 구문 강조 표시에서 볼 수 있습니다.

아래는 수정된 버전입니다. 다른 구문 강조 표시에 유의하세요.

#!/bin/bash

REPORTS="Product_Report"
YEARS="2014 2015 2016 2017"
MONTHS="01 02 03 04 05 06 07 08 09 10 11 12"

for r in ${REPORTS}; do
    echo "Rebuilding ${r}.csv"
    head -n 1 ${r}.header > ${r}.csv
    for y in ${YEARS}; do
        for m in ${MONTHS}; do
            f="Data/${r}_${y}${m}.csv"
            if [ ! -s "${f}" ]; then echo "Skipping ${f} (not present)"; continue; fi
            tail -n +2 ${f} >> ${r}.csv
            wc -l ${f}
        done
    done
    echo
    wc -l ${r}.csv
done

관련 정보