morg Napisano Luty 24, 2009 Zgłoszenie Share Napisano Luty 24, 2009 Cześć. W jaki sposób rozdzielic działanie skryptu (rozpakowanie archiwum zip) w zależności od serwera na którym pracuje? np na: HP-UX (nazwa pliku: h.zip) AIX (nazwa pliku: a.zip) Początek i koniec skryptu jest bez zmnian. M. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
morsik Napisano Luty 24, 2009 Zgłoszenie Share Napisano Luty 24, 2009 A nie można normalnie ifem tego zrobić? if ($SERVER == "HP-UX") do echo "kod dla HP-UX" else echo "kod dla AIX" done;; Coś w ten deseń Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
morg Napisano Luty 24, 2009 Autor Zgłoszenie Share Napisano Luty 24, 2009 Świetny pomysł! Ale pytanie: Czy zakończy na "done" czy poleci dalej ? Zależało by mi żeby poleciał dalej M. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
morsik Napisano Luty 24, 2009 Zgłoszenie Share Napisano Luty 24, 2009 Ale pytanie: Czy zakończy na "done" czy poleci dalej ? Zależało by mi żeby poleciał dalej man bash done jest odpowiednikiem "}" w C++/PHP/Perlu Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@WalDo Napisano Luty 24, 2009 Zgłoszenie Share Napisano Luty 24, 2009 Pętlę "if" wypadałoby zakończyć zgrabnym "fi" Co do pytania o "done" to nie widzę powodu, żeby się skrypt tu zatrzymał. Jedynym miejscem wyskoku jest koniec skryptu lub słowo kluczowe "exit". Jeśli systemów jest więcej niż dwa można się posłużyć "case .... esac". Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
morg Napisano Luty 24, 2009 Autor Zgłoszenie Share Napisano Luty 24, 2009 Dziekuję wszystkim za odpowiedź. W miarę wolnego czasu sprawdzę te trzy warianty. M. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
morg Napisano Luty 27, 2009 Autor Zgłoszenie Share Napisano Luty 27, 2009 Rozwiązanie: uname >serwer serwer=`cat serwer` if [[ $serwer = "HP-UX" ]] then echo "hpek" fi if [[ $serwer = "AIX" ]] then echo "aixik" fi if [[ $serwer = "SunOS" ]] then echo "sunik" fi if [[ $serwer = "Linux" ]] then echo "linux" fi Wyniki: ------- hp-ux:$ ./a hpek ------ [morg@gburdzy test]$ ./a linux ------- aix:/wdr$ ./a aixik aix:/wdr$ ------ galeo:/home/gburdzy$ ./a sunik galeo:/home/gburdzy$ ----- Dziękuję za pomoc. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
jjj Napisano Luty 27, 2009 Zgłoszenie Share Napisano Luty 27, 2009 To sobie jeszcze elif-y podopisuj. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@WalDo Napisano Luty 27, 2009 Zgłoszenie Share Napisano Luty 27, 2009 To sobie jeszcze elif-y podopisuj. case jest bardziej przejrzysty i o ile się nie mylę szybszy (co tu akurat chyba nie ma znaczenia). Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
morg Napisano Luty 27, 2009 Autor Zgłoszenie Share Napisano Luty 27, 2009 To sobie jeszcze elif-y podopisuj. Jakie znowu elif-y ? Nie ma znaczenia szybkosc. Pobiera ze zmiennej jaki to serwer i rozpakowuje zipa dedykowanego na ten serwer. Pozniej go nazywa po swojemu i wrzuca do podkatalogu. Oto cialo tej procedury: # ----------------- Rozdzielenie exe na poszczegolne katalogi # ------------------------ w zaleznosci od serwera cd Roboczy # -- start uname >serwer serwer=`cat serwer` if [[ $serwer = "HP-UX" ]] then ls h* >nazwa_exe cut -f2 nazwa_exe | cut -d'.' -f1 >wersja.exe unzip h* exe=`cat wersja.exe` fi if [[ $serwer = "AIX" ]] then ls a* >nazwa_exe cut -f2 nazwa_exe | cut -d'.' -f1 >wersja.exe unzip a* exe=`cat wersja.exe` fi if [[ $serwer = "SunOS" ]] then ls o* >nazwa_exe cut -f2 nazwa_exe | cut -d'.' -f1 >wersja.exe unzip o* exe=`cat wersja.exe` fi # -- nie wykorzystywane -- #if #[[ $serwer = "Linux" ]] #then #echo "linux" #fi # ----- koniec Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@WalDo Napisano Luty 27, 2009 Zgłoszenie Share Napisano Luty 27, 2009 (edytowane) Jakie znowu elif-y ?jak jest "if" to jest też "elif" - podobnie jak "if" i "else" [EDIT] Aż się prosi o funkcję i case function funkcja { ls ${system}* >nazwa_exe cut -f2 nazwa_exe | cut -d'.' -f1 >wersja.exe unzip ${system}* exe=`cat wersja.exe` } case ${server} in "HP-UX") system="h" ;; "AIX") system="a" ;; "SunOS") system="o" ;; *) echo "Nie ma takiego systemu" exit 1 ;; esac #zawołaj funkcja Tak na szybko - nie testowałem. Edytowane Luty 27, 2009 przez WalDo Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
morg Napisano Luty 27, 2009 Autor Zgłoszenie Share Napisano Luty 27, 2009 Widze że jeszcze dużo się muszę nauczyć M. Edit.1: Re. UP: Nie działa. Nazwe serwera pobiera poprawnie ale do plików nazwa.exe i wersja.exe wrzuca wszystkie pliki z katalogu. hp-ux:/Roboczy$ ./a Nie ma takiego systemu Popatrze na to w domu, w ramach organizacji czasu wolnego Z pomocą książki i mana poprawie a Wy zweryfikujecie czy kod jest optymalny. M. Edit2: HP-UX:$ ls ${system} a h9_5133n0.zip o9_5150a0.zip wersja.exe a9_5150b2.zip nazwa_exe serwer Tu nieprawidlowo interpretuje zmienna. a gdy wpisałem serwer: hp-ux:/$ ls ${serwer} HP-UX not found hp-ux:/$ Popatrze na to w domu. M. EDIT: Jednak zrezygnowałem z tej funkcji. Czytelniejszy (i co najwazniejsze że działa) jest ten sposób który wyżej opisałem. Dziękuję za pomoc. M. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
morg Napisano Kwiecień 23, 2009 Autor Zgłoszenie Share Napisano Kwiecień 23, 2009 Wróciłem do tematu z innym zadaniem, a mianowicie wykonanie komendy w zależności od tego w jakim katalogu pracuje skrypt: sprawdz_katalog() polecenie="" { funkcja() { katalog=`pwd | awk 'BEGIN { FS="/"} {print $NF}' ` echo $katalog } case ${katalog} in "katalog_1") polecenie="polecenie" ;; "katalog_2") polecenie="polecenie" ;; "katalog_3") polecenie="polecenie" ;; *) polecenie="" echo "W tym katalogu nie uruchamiamy $polecenie" ;; esac funkcja echo $polecenie } i wykonanie sprawdz_katalog M. EDIT: Opisówka Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się