Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam,
Mam takie małe pytanko i problem. Podczas wywoływania skryptu podaję parametr, który ma zostać przetłumaczony.
Takie mam kody
Kłodzko PLXX0047
Kołobrzeg PLXX0054
Koszalin PLXX0031
Kraków PLXX0012
Łeba PLXX0032
Legnica PLXX0013
Łódź PLXX0014
Lublin PLXX0049
Lublin (Radawiec) PLXX0045
Małczyce PLXX0015
Mława PLXX0037
Oleśnica PLXX0016
Otwock PLXX0017
Płock PLXX0018
Police PLXX0019
Poznań PLXX0040
Pruszków PLXX0020
Przemyśl PLXX0050
Rybnik PLXX0021
Siedlce PLXX0042
Sopot PLXX0053
Sosnowiec PLXX0022
Świnoujście PLXX0024
Szczecin PLXX0025
Tarnów PLXX0026
Toruń PLXX0036
Tychy PLXX0027
Warszawa PLXX0028
Wrocław PLXX0029
w skrypcie jest to zapisane tak
kod=${1}
Chciałbym zamiast podawania PLXX0028 wpisać warszawa i skrypt sobie sam odszuka jaki to kod i wstawi w zmienną
kod=PLXX0028
.
Czy można to zrobić w jakiejś tabeli?
Macie pomysł jak to zrobić ?
Dzięki za pomoc
Redelek
Ostatnio edytowany przez redelek (2008-09-24 10:21:50)
Offline
urug napisał(-a):
Myślisz o tablicach hashujących? tzn.
tablica["Warszawa"] == "Jej kod" ?
Jeśli tak, to AFAIK bash ich nie obsługuje.
Bardziej nie pomogę, bo nie rozumiem problemu :)
chodzi mi o coś takiego.
Jak odpalam skrypt muszę podać parametr
./skrypt.sh PLXX0028
i w skrypcie do zmiennej kod zostaje przypisane PLXX0028
i ten parametr zmienia się w zależności od miasta.
Chciałbym żeby było tak
./skrypt.sh warszawa
Skrypt szuka słowa warszawa i jeśli znajdzie to do zmiennej kod wpisuje kod=PLXX0028
Mogę to zrobić tak
if [$kod == "warszawa"] then kod=PLXX0028
Ale to ile muszę zrobić tych if
Mam nadzieję że troszkę jaśniej ?
redelek
Ostatnio edytowany przez redelek (2008-09-24 11:41:19)
Offline
urug napisał(-a):
Ale gdzie go szuka? :)
W swojej wewnętrznej bazie danych, tak?
tak by w skrypcie napisał
array=(warszawa=PLXX0028,poznan=PLXX0040)
To przykład, ale czy coś takiego jest
Offline
2 sposoby mi do głowy przychodzą, pierwszy - w tablicy zapisać stringi Miasto=Kod i w pętli później np. cut'em rozdzielać. Drugi sposób, łatwiejszy - utworzyć 2 tablice, w pierwsza z kodami, druga z nazwami miast. Wyszukujesz według miast, lub według kodów - a by wyświetlić drugą wartość, wystarczy użyć uzyskany indeks.
Offline
Może zamiast if'a zrób zwykły case
case $1 in 'bialystok') CODE='PLXX0038' ;; 'brzeg') CODE='PLXX0001' ;; 'chojnice') CODE='PLXX0035' ;; 'czestochowa') CODE='PLXX0002' ;; 'elblag') CODE='PLXX0004' ;; 'gdansk') CODE='PLXX0005' ;; 'gdynia') CODE='PLXX0006' ;; 'goleniow') CODE='PLXX0007' ;; 'gorzow_wlkp') CODE='PLXX0008' ;; 'hel') CODE='PLXX0033' ;; 'kalisz') CODE='PLXX0009' ;; 'katowice') CODE='PLXX0010' ;; 'ketrzyn') CODE='PLXX0055' ;; 'kielce') CODE='PLXX0011' ;; 'klodzko') CODE='PLXX0047' ;; 'kolobrzeg') CODE='PLXX0054' ;; 'koszalin') CODE='PLXX0031' ;; 'krakow') CODE='PLXX0012' ;; 'leba') CODE='PLXX0032' ;; 'legnica') CODE='PLXX0013' ;; 'lodz') CODE='PLXX0014' ;; 'lublin') CODE='PLXX0049' ;; 'lublin_radawiec') CODE='PLXX0045' ;; 'malczyce') CODE='PLXX0015' ;; 'mlawa') CODE='PLXX0037' ;; 'olesnica') CODE='PLXX0016' ;; 'otwock') CODE='PLXX0017' ;; 'plock') CODE='PLXX0018' ;; 'police') CODE='PLXX0019' ;; 'poznan') CODE='PLXX0040' ;; 'pruszkow') CODE='PLXX0020' ;; 'przemysl') CODE='PLXX0050' ;; 'rybnik') CODE='PLXX0021' ;; 'siedlce') CODE='PLXX0042' ;; 'sopot') CODE='PLXX0053' ;; 'sosnowiec') CODE='PLXX0022' ;; 'swinoujscie') CODE='PLXX0024' ;; 'szczecin') CODE='PLXX0025' ;; 'tarnsw') CODE='PLXX0026' ;; 'torun') CODE='PLXX0036' ;; 'tychy') CODE='PLXX0027' ;; 'warszawa') CODE='PLXX0028' ;; 'wroclaw') CODE='PLXX0029' ;; 'zabrze') CODE='PLXX0030' ;; 'zamosc') CODE='PLXX0048' ;; 'zielona_gora') CODE='PLXX0043' ;; 'zatoka_pomorska') CODE='PLXX0051' ;; 'poludniowy_bałtyk') CODE='PLXX0052' ;; 'sniezka') CODE='PLXX0046' ;; esac
// Fragment kodu pogodynki by azhag
Offline
urug napisał(-a):
2 sposoby mi do głowy przychodzą, pierwszy - w tablicy zapisać stringi Miasto=Kod i w pętli później np. cut'em rozdzielać. Drugi sposób, łatwiejszy - utworzyć 2 tablice, w pierwsza z kodami, druga z nazwami miast. Wyszukujesz według miast, lub według kodów - a by wyświetlić drugą wartość, wystarczy użyć uzyskany indeks.
Czyli w tabeli musiały by być poukładane tak samo . A możesz mi podać przykładzik z dwoma tabelami i jak to wyciągać?
Nie robiłem jeszcze tabel w bash :)
Redelek
Offline
Praktycznie identycznie jak pokazałeś
#!/bin/bash KODY=( KOD1 KOD2 KOD3 ) MIASTA=( KRAKOW KATOWICE WROCLAW ) SZUKANY=$1 for (( i=0; i < ${#MIASTA[@]}; i++ )); do [ "${MIASTA[$i]}" = "$SZUKANY" ] && echo ${KODY[$i]} done
Tak w sumie teraz na to patrząc, mógłbyś zrobić to w 1 tablicy - nazwa miasta było by $i, a kod to $((i+1)) :)
Ostatnio edytowany przez urug (2008-09-24 12:12:14)
Offline
urug napisał(-a):
Praktycznie identycznie jak pokazałeś
Kod:
#!/bin/bash KODY=( KOD1 KOD2 KOD3 ) MIASTA=( KRAKOW KATOWICE WROCLAW ) SZUKANY=$1 for (( i=0; i < ${#MIASTA[@]}; i++ )); do [ "${MIASTA[$i]}" = "$SZUKANY" ] && echo ${KODY[$i]} doneTak w sumie teraz na to patrząc, mógłbyś zrobić to w 1 tablicy - nazwa miasta było by $i, a kod to $((i+1)) :)
DZIĘKUJĘ !!! O to mi chodziło :)
Offline