Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.os.unix.linux.misc > #121116

Re: Sonderzeichen in Skripten

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>

Show all headers | View raw


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 | NextPrevious in thread | Next in thread | Find similar | Unroll thread


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