Witam, dopiero rozpoczynam przygodę z BASHem, na początku znalazłem jakieś proste zadanie jednak nawet ono mnie pokonuje.
Stworzyłem skrypt który
pod jedną zmienną posiada ścieżkę jakiegoś katalogu [$1=/plik/katalog]
pod drugą zmienną ma wynik polecenia realpath.[2=$(realpath $x)
Moim zadaniem jest sprawdzić czy ścieżka w zmiennej $2 jest wewnątrz katalogu wskazywanego przez zmienną $1.
Walczę już kilka godzin ze składnią IFa i w żaden sposób nie potrafię sprawdzić czy jedna ze ścieżek jest częścią drugiej.
Bardzo przepraszam za zaśmiecanie forum tak oczywistymi(pewnie dla wszystkich) pytaniami, ale nie potrafię sobie poradzić korzystając z internetowych statements`ów IFa.
Pozdrawiam
0
3
Walczę już kilka godzin ze składnią IFa
A może pokażesz w takim razie, co już masz?
0
Ale czemu bash? Nie lepiej SH?
Pokaż też co masz jako interpreter/
0
Na szybko - sprawdź czy inode
się zgadza i wsio. W 99% przypadkach będzie działać, a tam gdzie działać nie będzie, to można wytłumaczyć, że w końcu to i tak ten sam plik.
4
Jeśli chcemy sprawdzić, czy katalog istnieje, używamy instrukcji testowania -d
.
if [[ -d "$sciezkaDoKatalogu" ]]
then
echo 'Katalog istnieje'
fi
Dla pliku będzie to -f
.
Mając nazwę pliku możemy dopisać ją do ścieżki i sprawdzić czy pod nią coś istnieje, o tak:
nazwaPliku=`basename $nazwaPliku`
if [[ -d "$sciezkaDoKatalogu/$nazwaPliku" ]]
then
echo 'Katalog istnieje'
fi
basename nie sprawdza czy plik istnieje. Robi tylko i wyłącznie tyle, że obcina wszystko przed nazwą pliku, np.
$ basename /tmp/kucyki.txt
kucyki.txt
Chyba tyle można napisać wedle treści podanej przez autora wątku. Jeśli się odezwie to może coś doprecyzuje.