[+] Wyszukiwanie w tablicy bash

Potrzebujesz pomocy z C, C++, perl, python, itp.
Awatar użytkownika
redelek
Posty: 89
Rejestracja: 19 marca 2007, 13:45

[+] Wyszukiwanie w tablicy bash

Post autor: redelek »

Cześć.

Mam mały problem jak wyszukać w tablicy:

Kod: Zaznacz cały

#!/bin/bash

array=("c211z091009","c212z091010","c213z091011","c214z091012","c215z091013",
"c216z091014","c217z091015","c217z091016")
NOWFILE=`date +%y%m%d`
DATE_1_GO=`date +%y%m%d --date="1 days ago"
for PLIKI in ${array[*]}
do
 if [ $PLIK == 'c*.z$NOWFILE ]; then
      echo "znalazłem plik $PLIK"
  else
    echo "Pobieram plik z 1 dzień do tyłu "
fi
done
Problem jest w tym:

Kod: Zaznacz cały

if [ $PLIK == 'c*.z$NOWFILE']
Muszę wyszukać plik, w którym zmienia się ta cyfra po c.

Tu jest właśnie mój problem nie wiem jak zdefiniować wyszukiwanie, żeby wyszukał, ale nie brał pod uwagę tego co jest pomiędzy c a z czyli cXXXz091009.

Będę bardzo wdzięczny za pomoc.
piter
Beginner
Posty: 128
Rejestracja: 09 lutego 2008, 12:45

Post autor: piter »

Nie jestem pewien czy o to chodzi:

Kod: Zaznacz cały

'c???.z$NOWFILE'
W kodzie brakuje chyba po prawej stronie pojedynczego cudzysłowu.
Awatar użytkownika
redelek
Posty: 89
Rejestracja: 19 marca 2007, 13:45

Post autor: redelek »

piter pisze:Nie jestem pewien czy o to chodzi:

Kod: Zaznacz cały

'c???.z$NOWFILE'
W kodzie brakuje chyba po prawej stronie pojedynczego cudzysłowu.
Nie tak już próbowałem , efekt jest taki że wyświetla się cały czas "Pobieram plik z 1 dzień do tyłu " .
Wygląda jak by nie przeszukiwał tablicy a raczej nie porównywał tego co ma w zmiennej $PLIK z tym moim szukanym ciągiem :(
piter
Beginner
Posty: 128
Rejestracja: 09 lutego 2008, 12:45

Post autor: piter »

redelek napisał:
Wygląda jak by nie przeszukiwał tablicy a raczej nie porównywał tego co ma w zmiennej $PLIK z tym moim szukanym ciągiem
To może sprawdź czy porównuje np. tak:

Kod: Zaznacz cały

if [ $PLIK == 'c211z091009' ]
Teoretycznie powinien wyświetlić napis:

Kod: Zaznacz cały

znalazłem plik c211z091009
Jeśli tak to znaczy, że program porównuje zmienną $PLIK z szukanym ciągiem. Jeśli nie to będzie oznaczało, że problem nie leży w sposobie zapisu wzorca 'c???.z$NOWFILE'

[ Dodano: 2009-10-29, 11:15 ]
I jeszcze jedno:

Kod: Zaznacz cały

for PLIKI in ${array[*]}

Kod: Zaznacz cały

if [ $PLIK == 'c*.z$NOWFILE ]
$PLIK czy $PLIKI
Awatar użytkownika
redelek
Posty: 89
Rejestracja: 19 marca 2007, 13:45

Post autor: redelek »

Poprawiłem wszystko, literówki były na forum, a nie w skrypcie.
Całosć wygląda tak

Kod: Zaznacz cały

array=("c211z091009" "c212z091029" "c213z091011" "c214z091012" "c215z091013"
"c216z091014" "c217z091015" "c217z091016") 
NOWFILE=`date +%y%m%d`
DATE_1_GO=`date +%y%m%d --date="1 days ago"`
echo ${array[*]}
for PLIKI in ${array[*]}
do
 if [ $PLIKI == "c???z${NOWFILE}" ]; then
      echo "znalazłem plik $PLIKI"
        else
        echo "Nie znalazłem pliku "
fi
done
Jeśli wstawiam cały ciąg c212z091029 to ładnie znajduje , a jak wstawiam c???z${NOWFILE}
to wyświetla że nic nie znalazł :(
piter
Beginner
Posty: 128
Rejestracja: 09 lutego 2008, 12:45

Post autor: piter »

redelek napisał:
Jeśli wstawiam cały ciąg c212z091029 to ładnie znajduje , a jak wstawiam c???z${NOWFILE}
to wyświetla że nic nie znalazł
Czyli z tego by wynikało, że problem jest w zapisie wzorca c???z${NOWFILE}. No to jeszcze bardziej ograniczmy krąg poszukiwań. Co się stanie jak wstawisz taki wzorzec:

Kod: Zaznacz cały

c212z${NOWFILE}
Awatar użytkownika
redelek
Posty: 89
Rejestracja: 19 marca 2007, 13:45

Post autor: redelek »

Nie znajduje plików w tabeli :(
piter
Beginner
Posty: 128
Rejestracja: 09 lutego 2008, 12:45

Post autor: piter »

A jak wpiszesz taki wzorzec:

Kod: Zaznacz cały

c???z091029
Awatar użytkownika
redelek
Posty: 89
Rejestracja: 19 marca 2007, 13:45

Post autor: redelek »

Też nie znalazł takich plików :(
piter
Beginner
Posty: 128
Rejestracja: 09 lutego 2008, 12:45

Post autor: piter »

Szczerze mówiąc kończą mi się pomysły.
Podsumowując jeśli wpiszesz jako wzorzec:

Kod: Zaznacz cały

c212z091029
To program znajduje taki plik, bo faktycznie jest w tablicy.
Natomiast jeśli wpiszesz tak:

Kod: Zaznacz cały

c212z${NOWFILE}
lub tak:

Kod: Zaznacz cały

c???z091029
To już nic nie znajduje a teoretycznie powinien znaleźć plik c212z091029
Zobacz jeszcze jak program "widzi" pierwszy wzorzec tzn. wstaw w kodzie:

Kod: Zaznacz cały

echo c212z${NOWFILE}
ODPOWIEDZ