Die Bash Variablen und Coding Hints

Ich kann mir auch nach all meinen Jahren mit Linux die zT sehr eigenwillige Syntax der Bash nicht merken. Deshalb diese kleine Hilfe:

Variable Bedeutung
$1..$n Positionsparameter. Ab 10 Parametern muss shift benutzt werden. Mit set setzbar.
$# Anzahl gesetzter Positionsparameter.
$_ Momentan gesetzte Shelloptionen.
$? Exit Status des letzten Vordergrundkommandos.
$$ Prozess Identifikationsnummer (PID) der aktuellen Shell.
$! PID des letzten Hintergrundkommandos.
$* Alle Positionsparameter als ein String.
$@ Alle Positionsparameter als einzelne Strings $1 $2 nacheinander. “$@” ergibt “$1” “$2” nacheinander.
Variable
CDPATH Suchverzeichnisse führ den Befehl cd
HOME Das Heimverzeichnis des Benutzers
IFS Input Field Seperator. Trennzeichen zwischen Eingaben. Voreingestellt auf Tab und Leer.
LOGNAME Loginname des Benutzers
MAIL Mailboxdatei des Benutzers
MAILCHECK Zeitperiode für die email-Prüfung. Voreingestellt auf 600 (Sek.).
MAILPATH Pfadnamen von Mailboxdateien. Mit : zu trennen.
PATH Suchdirectories für Programme. Voreinstellung ist /bin:/usr/bin
PS1 Primärprompt
PS2 Sekundärprompt
SHACCT Datei für die Abrechnungsinfo (Shell-Accounting)
SHELL Pfadname der Shell.
TERM Terminal des Benutzers
TZ Time Zone. Die Zeitzone des Benutzers.

Bash-Loop

while test true ; do (chmod 744 index.html ; sleep 1 😉 done.

Ausdruck Gibt 0 zurück, wenn…
[ -r $datei ] …datei lesbar ist
[ -w $datei ] …datei schreibbar ist
[ -x $datei ] …datei ausführbar ist
[ -f $datei ] …datei eine normale Datei ist
[ -d $datei ] …datei ein Directory ist
[ -c $datei ] …datei ein Zeichengerät ist
[ -b $datei ] …datei ein Blockgerät ist
[ -p $datei ] …datei eine named pipe ist
[ -u $datei ] …die SUID der datei gesetzt ist
[ -g $datei ] …die SGID der datei gesetzt ist
[ -k $datei ] …das Sticky Bit der datei gesetzt ist
[ -s $datei ] …datei nicht leer ist
Ausdruck Gibt 0 zurück, wenn…
[ -t $fd ] …filedescriptor fd (zahl) einem terminal zugeordnet ist. fd ist 1 ohne fd.
Ausdruck Gibt 0 zurück, wenn…
[ -z $str ] …string str die laenge null hat
[ -n $str ] …string str die laenge ungleich null hat
Ausdruck Gibt 0 zurück, wenn…
[ $str1=$str2 ] …string str1 gleich str2 ist
[ $str1!=$str2 ] …string str1 ungleich str2 ist
Ausdruck Gibt 0 zurück, wenn…
[ $i1 -eq $i2 ] …zahl i1 gleich zahl i2 ist
[ $i1 -ne $i2 ] …zahl i1 gleich zahl i2 ist
[ $i1 -gt $i2 ] …zahl i1 größer zahl i2 ist
[ $i1 -ge $i2 ] …zahl i1 größer gleich zahl i2 ist
[ $i1 -lt $i2 ] …zahl i1 kleiner zahl i2 ist
[ $i1 -le $i2 ] …zahl i1 kleiner gleich zahl i2 ist

Bash IF Abfrage

if [ “$#” -lt “3” ]; then
echo “Das Skript erwartet mindestens 3 Argumente”
exit 1
else
exit 0
fi

# Andere Schreibweise:
[ “$#” -lt “3” ] && { echo “Das Skript erwartet mindestens 3 Argumente”; exit 1; }

if [ $UDP -gt $MAX_HITS ]; then
#do something
fi

Bash FOR Schleifen

test -e /tmp/etc$$ || mkdir /tmp/etc$$

for i in find /etc -type f -maxdepth 1;
do
test -r $i || continue
cp $i /tmp/etc$$
bzip2 /tmp/etc$$/basename $i
done

Bash Case

case word in
pattern1) command;;
pattern2) command;;
esac

Bash while Schleife

while [ “$#” -gt “0” ]; do
case $1 in
-a) echo “Option a”
shift;;
-l) echo “Option l”
shift;;
-f) echo “Option f Argument ist $2”
shift 2;;
-F) echo “Option F”
shift;;
*) echo “Unerwartete Option”
# tue etwas…
;;
esac
done

Bash Until

until command
do
command
command
done

Bash Funktionen

function GetAbsolutePathName()

{

test -z “$1” && exit

Pfad=${1%/*}

Datei=${1##*/}

echo cd $Pfad 2>/dev/null && pwd || echo $Pfad/$Datei

}

GetAbsolutePathName /home/benutzer

Bash übergebene Parameter parsen

while [ “$#” -gt “0” ]; do

case $1 in

smb) echo “smb” shift;;

nmb) echo “nmb” shift;;

*) echo “Unerwartete Option” ;;

esac

done

Suchen und Ersetzen mit sed

sed ‘s/ / /g’ datei > /tmp/tmp.$$

cat /tmp/tmp.$$ > datei

rm /tmp/tmp.$$

Suchen und Ersetzen mit sed ohne temp file

cat text | sed -e s/\$var1/$var1/g -e s/\$var2/$var2/g -e

cat brief | sed -e s/voegeln/unterhaltung/g -e s/doris/betty/g -e

Suchen und Ersetzen mit perl

perl -pi -e “s/angela/doris/g;” liebesbrief.txt

hier können auch wildcards verwendet werden um mehrere Dateien auf einmal zu ändern:

perl -pi -e “s/angela/doris/g;” *.txt

Zeit ausgeben

echo $0 ” gestartet um ” $(date +%Y-%m-%d_%H:%M:%S)

Ähnliche Beiträge:

0 Kommentare

Dein Kommentar

Want to join the discussion?
Feel free to contribute!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.