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 [2021/07/28 07:30] – [Dateinamen beschneiden] stshellscripts:shellscripts [2022/12/20 11:25] – [Zählschleife (kopfgesteuert)] st
Zeile 181: Zeile 181:
  echo "empty parameter!"  echo "empty parameter!"
  echo "Usage: $0 [Parameter]"  echo "Usage: $0 [Parameter]"
-fi 
-</code> 
- 
-==== Fehler aufgetreten (Exit-Code ungleich 0) ==== 
- 
-<code bash> 
-if [ $? -ne 0 ] 
-then 
-  echo Fehler aufgetreten 
-  exit 1 
-else 
-  Code 
 fi fi
 </code> </code>
Zeile 232: 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 248: 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 254: 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 309: 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) === 
 + 
 +<code bash> 
 +if [ $? -ne 0 ] 
 +then 
 +  echo Fehler aufgetreten 
 +  exit 1 
 +else 
 +  Code 
 +fi 
 +</code>
  
  
Zeile 335: Zeile 369:
  
 ==== sed-Befehle ==== ==== sed-Befehle ====
 +
 +# Kommentarzeilen entfernen:'' sed /^#/d Dateiname.txt''
 +
 +Leerzeilen: ''sed /^$/d Dateiname.txt''
  
 <file> <file>