Strona 1 z 2
[+] Wyszukiwanie w tablicy bash
: 29 października 2009, 09:04
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:
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.
: 29 października 2009, 09:53
autor: piter
Nie jestem pewien czy o to chodzi:
W kodzie brakuje chyba po prawej stronie pojedynczego cudzysłowu.
: 29 października 2009, 10:01
autor: redelek
piter pisze:Nie jestem pewien czy o to chodzi:
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

: 29 października 2009, 10:51
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:
Teoretycznie powinien wyświetlić napis:
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:
$PLIK czy $PLIKI
: 29 października 2009, 12:03
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ł

: 29 października 2009, 13:59
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:
: 29 października 2009, 14:12
autor: redelek
Nie znajduje plików w tabeli

: 29 października 2009, 14:17
autor: piter
A jak wpiszesz taki wzorzec:
: 29 października 2009, 14:20
autor: redelek
Też nie znalazł takich plików

: 29 października 2009, 14:36
autor: piter
Szczerze mówiąc kończą mi się pomysły.
Podsumowując jeśli wpiszesz jako wzorzec:
To program znajduje taki plik, bo faktycznie jest w tablicy.
Natomiast jeśli wpiszesz tak:
lub tak:
To już nic nie znajduje a teoretycznie powinien znaleźć plik c212z091029
Zobacz jeszcze jak program "widzi" pierwszy wzorzec tzn. wstaw w kodzie: