shellscripts:shellscripts

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
shellscripts:shellscripts [2022/02/17 15:25] stshellscripts:shellscripts [2022/12/20 11:25] – [Zählschleife (kopfgesteuert)] st
Zeile 220: Zeile 220:
  
 [[https://stackoverflow.com/questions/226703/how-do-i-prompt-for-yes-no-cancel-input-in-a-linux-shell-script|How do I prompt for Yes/No/Cancel input in a Linux shell script?]] [[https://stackoverflow.com/questions/226703/how-do-i-prompt-for-yes-no-cancel-input-in-a-linux-shell-script|How do I prompt for Yes/No/Cancel input in a Linux shell script?]]
 +
 +
 +==== interaktive Shell erkennen ====
 +
 +Skripts sollten bei Aufruf über cron nicht unnötig Statusmeldungen erzeugen:
 +<code bash>
 +if [ -z "$PS1" ]; then
 +    echo This shell is not interactive.
 +else
 +    echo This shell is interactive.
 +fi
 +</code>
 +
 ==== Datei erzeugen ==== ==== Datei erzeugen ====
  
Zeile 236: Zeile 249:
  
 ==== Zählschleife (kopfgesteuert) ==== ==== Zählschleife (kopfgesteuert) ====
 +
 +kopfgesteuert: wird nur ausgeführt wenn Bedingung erfüllt.
  
 von 1.. bis 10 zählen: von 1.. bis 10 zählen:
Zeile 242: Zeile 257:
 i=1 i=1
 while [ $i -le 10 ] while [ $i -le 10 ]
 +do
 +  echo $i
 +  let i=$i+1 #nur bash
 +  # i=`expr $i + 1` # universal
 +done
 +</code>
 +oder als for-Schleife:
 +<code bash>
 +for i in {0..10}; do echo $i; done
 +</code>
 +==== Zählschleife (Fussgesteuert) ====
 +
 +Fußgesteuert: wird mindestens einmal ausgeführt und anschließend nur wenn Bedingung erfüllt.
 +
 +von 1.. bis 10 zählen:
 +<code bash>
 +#!/bin/bash
 +i=1
 +until [ $i -gt 10 ]
 do do
   echo $i   echo $i
Zeile 297: Zeile 331:
 </code> </code>
  
-[[https://www.tobstarr.com/2017/03/25/cleaning-up-in-bash-scripts/|Quelle]]+[[https://www.tobstarr.com/2017/03/25/cleaning-up-in-bash-scripts/|Quelle]] siehe auch: [[https://www.innoq.com/de/blog/fehlerbehandlung-in-shellskripten/|Fehlerbehandlung in Shellskripten]].
  
 === Fehler aufgetreten (Exit-Code ungleich 0) === === Fehler aufgetreten (Exit-Code ungleich 0) ===
Zeile 335: Zeile 369:
  
 ==== sed-Befehle ==== ==== sed-Befehle ====
 +
 +# Kommentarzeilen entfernen:'' sed /^#/d Dateiname.txt''
 +
 +Leerzeilen: ''sed /^$/d Dateiname.txt''
  
 <file> <file>