TextEditで「egrep:不均衡角括弧」エラーが発生する

TextEditで「egrep:不均衡角括弧」エラーが発生する

私は仕事のために小さなbashスクリプトを書いた。メタデータに基づいてファイルを自動的に更新しようとしています。

全体的に、スクリプトはうまく機能しますが、新しいバージョンを保存するたびにエラーが発生します。

egrep: アンバランスブラケット

HOSTEDDATE=まったく同じ構文を使用して開始行を再構築すると、再び機能します。私はこれが形が変わっているように見える引用符に関連していると思います(最初に入力するときは完全に垂直で、新しいバージョンで再保存した後に角度があります)。

TextEditでプレーンテキストを使用していますが、これは既知の問題ですか?同じ行を繰り返し書き換える必要のない回避策はありますか?

コードの関連部分は次のとおりです。

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

答え1

Smart quotesこれはMacOSでのこの機能の副作用です。無効にするには、次を適用します。

TextEdit>>PreferencesSmart quotes選択解除)

ここに画像の説明を入力してください。

または、Smart quotesリッチテキスト文書に制限してください。ただ、適用する:

TextEdit>>PreferencesSmart quotes and dashes in rich text documents only確認する)

ここに画像の説明を入力してください。

Smart quotes最後に、システム全体の無効化を無効にするには、次を参照してください。Mavericks(またはTextEdit)の引用の問題

答え2

テキストエディタで標準のASCII引用文をもう少しクールな引用文に変更したようです。問題は、シェルがASCII引用符以外には何も考慮しないため、動作が変更されることです。

たとえば、一重引用符は次のとおりです。

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

素晴らしい引用符で:

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

最初のケースでは、引用符はバックスラッシュを保護し、そうであればバックegrepスラッシュが開く括弧を保護します。 2番目のケースでは、シェルに引用符が表示されないため、バックスラッシュを処理してコマンドでそれを確認すると、バックスラッシュが消えてegrepグループ化構成の開始として使用されます。

解決策は、ASCII引用符を生成するようにエディタを変更するか、引用符の変更を必要としないエディタを使用することです。

関連情報