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
shellscripts:shellscripts [2022/02/17 15:25] stshellscripts:shellscripts [2023/01/17 23:45] (aktuell) – [Links] st
Zeile 16: Zeile 16:
 ===== Links ===== ===== Links =====
  
 +  * [[https://devhints.io/bash|Bash scripting cheatsheet]]
   * [[http://mywiki.wooledge.org/BashFAQ/001|How can I read a file (data stream, variable) line-by-line (and/or field-by-field)?]]   * [[http://mywiki.wooledge.org/BashFAQ/001|How can I read a file (data stream, variable) line-by-line (and/or field-by-field)?]]
   * [[http://www.barmasse.org/linux/kommandozeile/sed.html|sed – Mit dem „Streaming Editor“ Text in Dokumenten verändern]]   * [[http://www.barmasse.org/linux/kommandozeile/sed.html|sed – Mit dem „Streaming Editor“ Text in Dokumenten verändern]]
Zeile 220: Zeile 221:
  
 [[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 250:
  
 ==== 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 258:
 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 332:
 </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 370:
  
 ==== sed-Befehle ==== ==== sed-Befehle ====
 +
 +# Kommentarzeilen entfernen:'' sed /^#/d Dateiname.txt''
 +
 +Leerzeilen: ''sed /^$/d Dateiname.txt''
  
 <file> <file>