TextEdit produzindo o erro “egrep: parênteses não balanceados”

4

Escrevi um pequeno script para trabalhar: estou tentando atualizar um arquivo automaticamente com base nos metadados.

No geral, o script funciona bem, mas sempre que salvo uma nova versão, recebo o erro:

egrep: parentheses not balanced

Se eu reescrever a linha que inicia HOSTEDDATE= , usando exatamente a mesma sintaxe, ela funcionará novamente. Eu suspeito que tenha algo a ver com as aspas que parecem mudar de aparência (perfeitamente verticais quando digitado pela primeira vez, em ângulo depois de ser salvo novamente como uma nova versão).

Como estou usando texto simples no TextEdit, isso é um problema conhecido? Existe uma solução alternativa que não me envolva reescrever a mesma linha repetidas vezes?

A parte relevante do código está abaixo:

for PIURL in ${ARRAY[*]}
    do
    HOSTEDDATE='cURL -s ${PIURL} | strings | egrep -o "CreationDate\(D:[0-9]{6}" | egrep -o "[0-9]{6}"'
    FILE=${PIURL##*/}
    NAME=${FILE%.*}

    #find local file and pull date
    LOCALDATE='ls $NAME* | egrep -o "[0-9]{6}"'

        if [[ ${HOSTEDDATE} > ${LOCALDATE} ]]; then
        #move old file to "ARCHIVED"
        mv $NAME* ARCHIVED/

        #download PI file with required name
        cURL -L -o ${NAME}_${HOSTEDDATE}.pdf $PIURL

        #send e-mail with 
        mail -s "${NAME} has a new PI" [email protected] <<< "${NAME}_${DATE} has been uploaded to Pulse"
        fi
done
    
por Emmie MC 17.12.2017 / 20:16

2 respostas

3

Este é um efeito colateral do recurso Smart quotes no MacOS. Para desativar, aplique:

TextEdit > Preferences > Smart quotes ( desmarque )

Comoalternativa,pararestringirSmartquotesadocumentosrich-textsomente,aplique:

TextEdit>Preferences>Smartquotesanddashesinrichtextdocumentsonly(verificar)

Porúltimo,sevocêquiserdesabilitarSmartquotesemtodoosistema,consulte: Quotes problem in Mavericks (or TextEdit)

    
por 17.12.2017 / 20:48
2

Parece que seu editor de texto altera as cotações ASCII padrão para algumas citações mais sofisticadas. O problema com eles é que o shell não considera nada além das aspas ASCII como aspas, então o comportamento muda.

Por exemplo citações normais:

$ echo "foo\(bar"
foo\(bar

vs. citações extravagantes:

$ echo “foo\(bar”
“foo(bar”

No primeiro caso, as aspas protegem a barra invertida, e se ela fosse egrep , a barra invertida protegeria o parêntese à esquerda. No segundo caso, o shell não vê nenhuma aspas, então ele manipula a barra invertida, que desaparece quando o comando a vê, e egrep a tomará como o início de uma construção de agrupamento.

A solução é corrigir o editor para produzir aspas ASCII ou usar uma que não insista em alterar as aspas.

    
por 17.12.2017 / 20:45