Bash array argument z polecenia

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
zerocool
Piegowaty Guziec
Piegowaty Guziec
Posty: 2
Rejestracja: 26 gru 2011, 01:52
Płeć: Mężczyzna
Wersja Ubuntu: 11.10
Środowisko graficzne: LXDE
Architektura: x86

Bash array argument z polecenia

Post autor: zerocool »

jeden skrypt zawiera tablicę

Kod: Zaznacz cały

array=(
KEY_1=24
KEY_2=87
KEY_MENU=232
...
)
drugi uruchamiany przez usera z argumentem KEY_X miałby uruchamiać polecenie

Kod: Zaznacz cały

 echo "232" | nc 192.168.x.x 1234
Jak coś takiego osiągnąć w bashu?
tak miałby być uruchamiany

Kod: Zaznacz cały

./test.sh KEY_MENU
Awatar użytkownika
beluosus
Zakręcona Traszka
Zakręcona Traszka
Posty: 695
Rejestracja: 01 paź 2006, 15:32
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Xfce
Architektura: x86
Kontakt:

Re: Bash array argument z polecenia

Post autor: beluosus »

Łatwiej będzie jak użyjesz hash table:

Kod: Zaznacz cały

typeset -A array

array[KEY_1]=24
array[KEY_2]=87
array[KEY_MENU]=232
A w drugim skrypcie wystarczy:

Kod: Zaznacz cały

#!/bin/bash

. pierwszy.sh

echo ${array[$1]}
Jeśli jednak chcesz taki format tablicy jak masz to trzeba troszkę bardziej pokombinować:

Kod: Zaznacz cały

#!/bin/bash

. pierwszy.sh

for i in ${array[*]}
do
        ret=$(expr "$i" : "${1}=")
        if (( $ret > 0 ))
        then
                code=${i:$(($ret))}
                echo $code
        fi
done
zerocool
Piegowaty Guziec
Piegowaty Guziec
Posty: 2
Rejestracja: 26 gru 2011, 01:52
Płeć: Mężczyzna
Wersja Ubuntu: 11.10
Środowisko graficzne: LXDE
Architektura: x86

Re: Bash array argument z polecenia

Post autor: zerocool »

Dziękuję !
przeformatowałem tablicę skoro miała tylko 76 wpisów
wszystko działa jak należy
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 24 gości