行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

関連情報