====== Spezielle Werte ======
Eigene **PID**:
PID=$$
**ReturnCode** der letzten Operation:
RC=$?
:!: Die Abfrage des ReturnCodes soll **unmittelbar** nach der Operation stattfinden!
Die **Länge** des String-Wertes einer Variable:
LNG=${#VARNAME}
Der eigene **Skript-Name** beim Aufruf (Programmaufruf ohne Parameter), eventuel vorhandener Pfad ist mit dabei:
MY_FULL_NAME=${0}
**Programmname** (inklusive evtl. Extension) ohne Pfad und ohne Parameter:
SELF_FILENAME=${0##*/}
Reiner **Programmname** (ohne evtl. Extension und ebenfalls ohne Pfad):
SELF_PRG_NAME=${SELF_FILENAME%.*}
Relativer **Pfad** (aus dem aktuellen Verzeichnis $PWD heraus) ohne Dateiname und Parameter:
PFAD=${0%/*}
Extension ersetzen:
CFG_FILE_EXT="cfg"
CFG_FILE=${PWD}/${SELF_PRG_NAME}.${CFG_FILE_EXT}
**Anzahl der Parameter** beim Aufruf ermitteln:
ANZAHL=$#
Die **Parameter** beim Aufruf:
ALL_PARAM=${@}
**PID** des Tochterprozesses:
PID=${!}
Warten bis der Tochterprozess zu Ende ist:
wait ${PID}
Kurze Zusammenfassung:
# Expression # Result
${path##/*/} long.file.name
${path#/*/} billr/mem/long.file.name
$path /home/billr/mem/long.file.name
${path%.*} /home/billr/mem/long.file
${path%%.*} /home/billr/mem/long
${path%/*} /home/billr/mem
**default-Werte** für Variablen setzen:
# String-Werte:
VAR_STR=${VAR_STR:="ALL"}
# Numerische Werte:
VAR_NUM=${VAR_NUM:=0}
----
Stand: 05.11.2009
EOF