linha 13: erro de sintaxe próximo ao token inesperado '(' [fechado]

0

A execução do shell para reunir vários arquivos csv, executou esse processo antes do final do ano e foi executada corretamente hoje, depois de fazer apenas a edição para incluir 2017 e receber o erro mencionado acima.

#!/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
    
por Steve Shields 09.01.2017 / 17:05

1 resposta

6

O editor de texto usado para fazer a alteração usou um em vez do esperado " para fechar a sequência de ANOS. Isso atrapalha as delimitações de string completas do arquivo, que você pode ver no realce de sintaxe da sua pergunta.

Versão corrigida abaixo, observe o realce de sintaxe diferente:

#!/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
    
por 09.01.2017 / 17:16