Zum Inhalt

Bash-Programmierung

Nützliche Helfer in Bash-Skripten

Internal Field Seperator

Sehr nützlich für for-Schleifen, zum Iterieren über Datei-Zeilen. Einfach folgendes im Bash-Skript for der Schleife setzen:

IFS=$'
'

Azzoziative Arrays

Diese müssen vorher deklariert werden:

declare -A uid2mail
uid2mail[tda]=tobias.daff
uid2mail[abc]=anton.berta.cotton
Aufruf / Benutzung mit:
uid=tda
echo ${uid2mail[$uid]}

Anfangslöschung

Das angegebene Muster wird von Links entfernt, bei (#) bis zum ersten Auftreten und bei (##) bis einschließlich des letzten:

mypath=/opt/tier/affe/schimpanse
echo ${mypath#*/}
=> opt/tier/affe/schimpanse
echo ${mypath##*/}
=> schimpanse

Endlöschung

Das angegebene Muster wird von Rechts entfernt, bei (%) bis zum ersten Auftreten und bei (%%) bis einschließlich des letzten:

logfile=/opt/app42/logs/main.log.gz
echo ${logfile%.*}
=> /opt/app42/logs/main.log
echo ${logfile%%.*}
=> /opt/app42/logs/main

Alternative zu seq

Einer-Schritte:

echo {0..9}

Dateien einlesen

Anstatt $(cat Datei) geht auch $(< Datei) und ist auch performanter.

Kanalumlenkung

std.out und std.err zusammen umlenken:

programm.sh > programm.log 2>&1

TCP-Handshake testen (ohne telnet)

Wenn mal kein telnet zur hand ist:

/bin/bash -c "(> /dev/tcp/www.heise.de/80) >/dev/null 2>&1"

Konvertierung zwischen Groß und Klein

Zwischen Groß- und Kleinschreibung konvertieren.

Bash ab Version 4 hat ein neues nettes Feature:

$ abc="Monkey Island"
$ echo ${abc^^}
MONKEY ISLAND
$ echo ${abc,,}
monkey island

Der Weg mittels tr geht natürlich weiterhin:

$ echo "MONKEY" | tr '[A-Z]' '[a-z]'
monkey

History für aktuelle Shell deaktivieren

set +o history
und wieder aktivieren mit
set -o history