Ich versuche, ein mit folgenden Perl-Befehl ersetzen:
perl -C -p -i -e 's/([\?\.\!])\n/$1 /g' html/數14.html
Das Ergebnis ist in Ordnung, wenn ich es von der Kommandozeile aufrufen. Wenn ich es in einem Makefile anrufe, funktioniert es nicht. Anscheinend wird $ 1 als Shell-Variable interpretiert.
Im Makefile sieht es wie folgt aus:
數14.html: 數14.adoc 40_2064_Im\ Strand-Appartment.adoc 41_2064_Ein\ Plan.adoc 42_1915_In\ einer\ Suppenküche.adoc
asciidoctor -D html parts/數14.adoc
perl -C -p -i -e 's/([\?\.\!])\n/$1 /g' html/數14.html
Wie kann ich hier normale regexp Verhalten haben?
Bitte zeigen Sie, wie Sie es in Ihrem Bash-Skript aufrufen. Es handelt sich nicht um eine Shell-Variable, wenn es wie in Ihrem Beispiel oben in Anführungszeichen steht. aber es wird, wenn Sie einige verschiedene Zitate darum herum setzen. Zum Beispiel wird 'foo = $ (perl -C -p -i -e 's/([\? \. \!]) \ N/$ 1/g' html/數 14.html)' mit '$ zitiert() ', was' $ 1' erweitert, und Sie müssten '$ 1' in' \ $ 1' flüchten. – Amadan
Diesen Thread lesen: [http://stackoverflow.com/questions/31557677/how-to-pass-a-regular-expression-as-a-parameter-to-a-perl-one-liner-in-a- bash-sc/31563152 # 31563152] – Poyke
Ja, tut mir leid. Es ist kein Bash-Skript, es ist ein Makefile. : - | – Michael