Porównywanie ścieżek - BASH

VA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1
0

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

cerrato
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
  • Postów: 9049
3

Walczę już kilka godzin ze składnią IFa

A może pokażesz w takim razie, co już masz?

enclude
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
  • Postów: 110
0

Ale czemu bash? Nie lepiej SH?
Pokaż też co masz jako interpreter/

hauleth
  • Rejestracja: dni
  • Ostatnio: dni
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.

PerlMonk
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa 🐪
  • Postów: 1719
4

Jeśli chcemy sprawdzić, czy katalog istnieje, używamy instrukcji testowania -d.

Kopiuj
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:

Kopiuj
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.

Kopiuj
$ 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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.