Linux bash: Zeichen im string prüfen (slash)

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!

Check Also

OpenVPN im DualStack Betrieb

Wie man OpenVPN im DualStack IPv4/IPv6 parallel betreibt Mit der OpenVPN Version 2.4 und höher ...

Schreibe einen Kommentar

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

Lars Pilawski hat 4,73 von 5 Sternen 981 Bewertungen auf ProvenExpert.com