Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.os.unix.linux.misc > #121116
| From | Helmut Waitzmann <nn.throttle@xoxy.net> |
|---|---|
| Newsgroups | de.comp.os.unix.linux.misc |
| Subject | Re: Sonderzeichen in Skripten |
| Date | 2022-02-01 23:44 +0100 |
| Organization | Aioe.org NNTP Server |
| Message-ID | <83h79i6wc9.fsf@helmutwaitzmann.news.arcor.de> (permalink) |
| References | <j57rjoFtefpU1@mid.individual.net> <83mtjja2ua.fsf@helmutwaitzmann.news.arcor.de> <sss3c5.5g8.1@stefan.msgid.phost.de> |
Stefan Reuther <stefan.news@arcor.de>:
Der Text
>https://wiki.ubuntuusers.de/Shell/Bash-Skripting-Guide_f%C3%BCr_Anf%C3%A4nger/
ist beim Thema «Quoting» mangelhaft: Er zäumt das Pferd vom
falschen Ende auf, weil er das Anführungszeichen («"») als das am
besten geeignete Quoting‐Verfahren anführt, obwohl damit längst
nicht alle Sonderzeichen ihrer Sonderbedeutung entledigt werden. Im
Gegenteil behalten manche Sonderzeichen unter gewissen Umständen
ihre Sonderbedeutung.
Ein besseres Quoting‐Verfahren ist der Apostroph («'») gemeinsam mit
dem umgekehrten Schrägstrich (Backslash, «\»): Damit lassen sich
wirklich alle Zeichen ihrer Sonderbedeutung entledigen.
Ein weiterer Mangel besteht beim Abschnitt über das Quoting: Er
vermischt die Zerlege‐Regeln der Kommandozeile mit den
Zerlege‐Regeln bei der Variablenexpansion, obwohl beide nicht
dasselbe sind. Ein Beispiel soll das verdeutlichen: Die
Kommandozeilen
variable='Hallo; date'; echo $variable
und
echo Hallo; date
bewirken nicht das gleiche, obwohl im ersten Fall in die Variable
genau der Text gesteckt wird, der im zweiten Fall direkt
hingeschrieben ist.
Einen dritten Mangel gibt es beim Abschnitt über das Quoting: Zum
Zeigen der Quoting‐Ergebnisse wird das «echo»‐Kommando benutzt, das
seinerseits die an es übergebenen Parameter noch bearbeitet und mit
Leerstellen zusammenklebt, ehe es sie ausgibt. Dadurch werden
Effekte verschleiert, die deutlicher ans Licht kämen, wenn zum
Zeigen der Ergebnisse das «printf»‐Kommando mit dem Parameter
«'>%s<\n'» benutzt würde. Den Nachteil, dass «'>%s<\n'» seinerseits
vom Quoting Gebrauch macht und erklärt werden müsste, bevor es
erklärt wird, kann man aber (vorläufig) beheben, indem man
dazuschreibt, dass das Kommando
printf '>%s<\n' weitere Parameter…
jeden seiner Parameter von «>» und «<» eingerahmt in je einer
eigenen Zeile ausgibt.
Bedingungen in «if»‐ und «while»‐Anweisungen werden so dargestellt,
als bestünden sie immer aus «test»‐ bzw. «[ … ]»‐Aufrufen. Später
taucht dann plötzlich kommentarlos als Bedingung ein arithmetischer
Ausdruck «(( ))» auf.
Richtig wäre, wenn der Text erklären würde, dass Bedingungen aus
beliebigen Kommandos – nicht nur aus «[ … ]»‐Aufrufen und
arithmetischen Ausdrücken – bestehen können: Als Wahrheitswert wird
der exit status des Kommandos (exit status 0 => wahr, exit status
ungleich 0 => falsch) verwendet. Dass «[ … ]»‐Aufrufe und
arithmetische Ausdrücke als Bedingungen funktionieren, liegt daran,
dass sie entsprechende exit status liefern.
Und so kann man dann in von Skripting‐Anfängern geschriebenen
Shell‐Skripten gerne mal
… | grep -q -e …
if test "$?" -eq 0
then
…
else
…
fi
an Stelle von
if … | grep -q -e …
then
…
else
…
fi
lesen.
Back to de.comp.os.unix.linux.misc | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Sonderzeichen in Skripten Albrecht Mehl <unvalid@invalid.invalid> - 2022-01-24 15:32 +0100
Re: Sonderzeichen in Skripten Marco Moock <mo01@posteo.de> - 2022-01-24 15:51 +0100
Re: Sonderzeichen in Skripten Helmut Waitzmann <nn.throttle@xoxy.net> - 2022-01-25 23:05 +0100
Re: Sonderzeichen in Skripten Hermann Riemann <nospam.ng@hermann-riemann.de> - 2022-01-26 10:48 +0100
Re: Sonderzeichen in Skripten Stefan Reuther <stefan.news@arcor.de> - 2022-01-26 18:19 +0100
Re: Sonderzeichen in Skripten Andreas Kohlbach <ank@spamfence.net> - 2022-01-26 15:35 -0500
Re: Sonderzeichen in Skripten Helmut Waitzmann <nn.throttle@xoxy.net> - 2022-02-01 23:44 +0100
Re: Sonderzeichen in Skripten Stefan Reuther <stefan.news@arcor.de> - 2022-02-03 17:29 +0100
Re: Sonderzeichen in Skripten Helmut Waitzmann <nn.throttle@xoxy.net> - 2022-02-06 01:48 +0100
Re: Sonderzeichen in Skripten Arno Welzel <usenet@arnowelzel.de> - 2022-02-09 14:08 +0100
Re: Sonderzeichen in Skripten Hermann Riemann <nospam.ng@hermann-riemann.de> - 2022-02-09 14:56 +0100
Re: Sonderzeichen in Skripten Arno Welzel <usenet@arnowelzel.de> - 2022-02-09 15:43 +0100
Re: Sonderzeichen in Skripten Hermann Riemann <nospam.ng@hermann-riemann.de> - 2022-02-09 16:13 +0100
Re: Sonderzeichen in Skripten Arno Welzel <usenet@arnowelzel.de> - 2022-02-10 17:35 +0100
Re: Sonderzeichen in Skripten Marcus Jodorf <trap@killfile.de> - 2022-02-11 17:08 +0100
Re: Sonderzeichen in Skripten Arno Welzel <usenet@arnowelzel.de> - 2022-02-12 11:04 +0100
Re: Sonderzeichen in Skripten Albrecht Mehl <unvalid@invalid.invalid> - 2022-02-12 14:21 +0100
Re: Sonderzeichen in Skripten Martin Schnitkemper <news.trash.5.mschnitk@spamgourmet.com> - 2022-02-12 23:36 +0100
Re: Sonderzeichen in Skripten Arno Welzel <usenet@arnowelzel.de> - 2022-02-13 11:16 +0100
Re: Sonderzeichen in Skripten Michael Schütz <der.schultze@web.de> - 2022-01-27 07:17 +0100
Re: Sonderzeichen in Skripten Dr Eberhard W Lisse <nospam@lisse.NA> - 2022-01-30 23:53 +0200
Re: Sonderzeichen in Skripten JJenssen <joemajen@arcor.de> - 2022-01-31 11:18 +0100
csiph-web