[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: while done und ein Counter



Christian Brabandt schrieb am 08. Jun um 16:42 Uhr:
> Hallo Joachim!
> 
> Joachim Hartmann schrieb am Mittwoch, den 08. Juni 2016:

> > Mir ist unklar warum das korrekte Zählwerbgis die Schleife nicht "verlässt"!
> > Wer weiss Rat, Google jedenfalls nicht! Oder ich stelle die Frage falsch.
> 
> Die variable wird in einer subshell hochgezählt und ist demzufolge 
> später nicht mehr zugreifbar. google bringt z.B. diesen SO Post:
> https://stackoverflow.com/questions/13726764/bash-script-while-loop-subshell-dilemma

Dort steht:

  BASH, Yash and PDKsh-derived shells create a new process only if the loop
  is part of a pipeline.

Abgesehen von der Möglichkeit, die andere gezeigt haben, die Erzeugung einer
Subshell mittels Process Substitution zu umgehen, reicht es in der Bash also
aus, dass der while Befehl nicht in einer Pipeline steht.  Dafür reicht eine
minimale Programmänderung:

-->-->--
# Liste der GPX-Dateien erstellen und und abarbeiten
   find -type f -name '*.pdf' > filelist

   while read Q_Datei;   do
     [...]
   done < filelist
--<--<--

Deine Frage ist also nicht falsch. Mal stolpert man darüber, und mal nicht,
und zufälligerweise habe ich dies gerade in der letzten Woche in man bash
gefunden. Es ist der Abschnitt "SHELL GRAMMAR".

Gruß
Christian

-- 
Christian Knoke            * * *            http://cknoke.de
* * * * * * * * *  Ceterum censeo Microsoft esse dividendum.


Reply to: