Um Tippfehler ganz auszuschließen, habe ich mir mal Gedanken gemacht um Fehler bei der Pfadangabe (read…)im Script zu umgehen.
Mit der Funktion prüft man die Eingabe, z.b. eines Pfades darauf, ob die Slashes am Anfang oder ggf. am Ende gesetzt sind. Die Eingabe “/pfad/” hat nicht die selben Auswirkungen wie “pfad/” oder nur “pfad”! Wenn man ausversehen nur “pfad” eingibt werden alle Handlugen, im Verzeichnis wo das Script ausgeführt wird, ausgeführt. Um dies zu verhindern werden stets die Slashes am Anfang und Ende gesetzt, um dadurch die korrekte Pfadangabe zu erreichen.
#!/bin/bash
read -p "pfad " home
if echo "$home" | grep -q '^/' ; then
echo "$home mit / am Anfang"
else
echo "$home ohne / am Anfang"
#Slash am Anfang einfügen
home=/$home
echo "$home wieder mit / am Anfang"
fi
echo "------------------------------------"
if echo "$home" | grep -q '/$' ; then
echo "$home mit / am Ende"
else
echo "$home ohne / am Ende"
# Slash am Ende einfügen
home=$home/
echo "$home wieder mit / am Ende"
fi
grep -q ‘^/’ bedeutet dass das erste Zeichen ein “/” sein muss und grep -q ‘/$’ das letze Zeichen auch ein “/”. Wenn dies nicht zutrifft (else), werden die Slashes jeweils gesetzt!
Ausgabe sieht so aus:
pfad home
home ohne / am Anfang
/home wieder mit / am Anfang
————————————
/home ohne / am Ende
/home/ wieder mit / am Ende
Oder so:
pfad /home
/home mit / am Anfang
————————————
/home ohne / am Ende
/home/ wieder mit / am Ende
Die die echo Ausgaben sind nur zur Veranschaulichung gesetzt worden!