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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2008-09-24 10:21:26

  redelek - Członek DUG

redelek
Członek DUG
Skąd: Warszawa
Zarejestrowany: 2008-07-17

Tablica w bash

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:

kod=${1}

Chciałbym zamiast podawania PLXX0028 wpisać warszawa i skrypt sobie sam odszuka jaki to kod i wstawi w zmienną

Kod:

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)


Pozdrawiam
Redelek
--------------------------------------------------------
Polecam hosting ViPower https://vipower.pl/panel/aff.php?aff=208, TikTalik https://tiktalik.com/pl/

Offline

 

#2  2008-09-24 11:33:12

  urug - Członek DUG

urug
Członek DUG
Skąd: Częstochowa
Zarejestrowany: 2008-04-22
Serwis

Re: Tablica w bash

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


Pozdrawiam, Tomek

Offline

 

#3  2008-09-24 11:38:17

  redelek - Członek DUG

redelek
Członek DUG
Skąd: Warszawa
Zarejestrowany: 2008-07-17

Re: Tablica w bash

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

Kod:

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

Kod:

./skrypt.sh warszawa

Skrypt szuka słowa warszawa i jeśli znajdzie to do zmiennej kod wpisuje kod=PLXX0028

Mogę to zrobić tak

Kod:

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)


Pozdrawiam
Redelek
--------------------------------------------------------
Polecam hosting ViPower https://vipower.pl/panel/aff.php?aff=208, TikTalik https://tiktalik.com/pl/

Offline

 

#4  2008-09-24 11:40:03

  urug - Członek DUG

urug
Członek DUG
Skąd: Częstochowa
Zarejestrowany: 2008-04-22
Serwis

Re: Tablica w bash

Ale gdzie go szuka? :)
W swojej wewnętrznej bazie danych, tak?

Ostatnio edytowany przez urug (2008-09-24 11:41:09)


Pozdrawiam, Tomek

Offline

 

#5  2008-09-24 11:42:54

  redelek - Członek DUG

redelek
Członek DUG
Skąd: Warszawa
Zarejestrowany: 2008-07-17

Re: Tablica w bash

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


Pozdrawiam
Redelek
--------------------------------------------------------
Polecam hosting ViPower https://vipower.pl/panel/aff.php?aff=208, TikTalik https://tiktalik.com/pl/

Offline

 

#6  2008-09-24 11:44:54

  urug - Członek DUG

urug
Członek DUG
Skąd: Częstochowa
Zarejestrowany: 2008-04-22
Serwis

Re: Tablica w bash

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.


Pozdrawiam, Tomek

Offline

 

#7  2008-09-24 11:47:52

  milyges - inż.

milyges
inż.
Skąd: Gorlice/Kraków
Zarejestrowany: 2006-04-09
Serwis

Re: Tablica w bash

Może zamiast if'a zrób zwykły case

Kod:

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

 

#8  2008-09-24 11:51:04

  redelek - Członek DUG

redelek
Członek DUG
Skąd: Warszawa
Zarejestrowany: 2008-07-17

Re: Tablica w bash

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


Pozdrawiam
Redelek
--------------------------------------------------------
Polecam hosting ViPower https://vipower.pl/panel/aff.php?aff=208, TikTalik https://tiktalik.com/pl/

Offline

 

#9  2008-09-24 11:54:16

  urug - Członek DUG

urug
Członek DUG
Skąd: Częstochowa
Zarejestrowany: 2008-04-22
Serwis

Re: Tablica w bash

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]}
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)


Pozdrawiam, Tomek

Offline

 

#10  2008-09-24 12:46:24

  redelek - Członek DUG

redelek
Członek DUG
Skąd: Warszawa
Zarejestrowany: 2008-07-17

Re: Tablica w bash

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]}
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)) :)

DZIĘKUJĘ !!! O to mi chodziło :)


Pozdrawiam
Redelek
--------------------------------------------------------
Polecam hosting ViPower https://vipower.pl/panel/aff.php?aff=208, TikTalik https://tiktalik.com/pl/

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)