Freesco, NND, CDN, EOS

http://www.freesco.pl
Dzisiaj jest wtorek, 8 lipca 2025, 23:02

Strefa czasowa UTC+2godz.




Nowy temat Odpowiedz w temacie  [ Posty: 14 ] 
Autor Wiadomość
Post: czwartek, 25 sierpnia 2005, 12:29 
Offline
Użytkownik

Rejestracja: wtorek, 13 sierpnia 2002, 11:27
Posty: 823
Lokalizacja: Lubliniec
Mam następujący problem, mam funkcję w bash'u, która ustawia wartość zmiennej A. Po wywołaniu tej funkcji jest mi potrzebna ta zmieniona przez funkcję wartośc A. Niestety po wyjściu z funkcji jest ustawiana jej pierwotna wartość (jeżeli była zdefiniowana wcześniej) Jak to zrobić w bash'u?

P.S. Nie chodzi mi o wysłanie zmiennej do pliku na dysku tylko o przekazanie zmienionej wartości do funkcji wywołującej.

_________________
Ludzie często, zamiast szukać prostych rozwiązań, komplikują sobie życie...


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: niedziela, 28 sierpnia 2005, 09:57 
Offline
Użytkownik

Rejestracja: wtorek, 13 sierpnia 2002, 11:27
Posty: 823
Lokalizacja: Lubliniec
Rozumiem, że nikt nie wie jak to się robi?

_________________
Ludzie często, zamiast szukać prostych rozwiązań, komplikują sobie życie...


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: niedziela, 28 sierpnia 2005, 10:10 
Offline
MODERATOR

Rejestracja: wtorek, 31 sierpnia 2004, 23:06
Posty: 3267
Lokalizacja: Katowice
ja zabardzo nie rozumiem co chcesz zrobic
ale przeciez starczy
a=12
echo $a
a=$[a + 5]
echo $a

no i zmienia wiec nie wiem o co ci chodzi pokaz jak to masz zrobione to sie cos wymysli

_________________
Obrazek


Na górę
 Wyświetl profil  
 
Post: niedziela, 28 sierpnia 2005, 12:41 
Offline
MODERATOR

Rejestracja: piątek, 5 lipca 2002, 17:31
Posty: 2449
Lokalizacja: Londyn
adi pisze:
Mam następujący problem, mam funkcję w bash'u, która ustawia wartość zmiennej A. Po wywołaniu tej funkcji jest mi potrzebna ta zmieniona przez funkcję wartośc A. Niestety po wyjściu z funkcji jest ustawiana jej pierwotna wartość (jeżeli była zdefiniowana wcześniej) Jak to zrobić w bash'u?


: [/] [] ()
#!/bin/sh

funkcja() {
jakies polecenia
}

zmienna=`funkcja`

echo "$zmienna"



spróbuj tak jak powyżej... nie sprawdzałem ale powinno zadziałać. w prostych przypadkach. Problem może chyba wystąpić jeśli $zmienna zawierałaby np. listę...

_________________
Mis'
___________________________________
"Real Men Use Telnet on port 80" (el bid)


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: niedziela, 28 sierpnia 2005, 22:41 
Offline
Użytkownik

Rejestracja: wtorek, 13 sierpnia 2002, 11:27
Posty: 823
Lokalizacja: Lubliniec
Dzięki mis' - spróbuję, ale jak mam więcej zmiennych to co wtedy ?? Akurat potrzebuję dwie. Wiem, mogę dwie funkcje napisać, ale ona robi jedną rzecz, także to byłoby trochę bez sensu. :)

Poza tym, u mnie jest tak:

: [/] [] ()
#!/bin/bash
zmienna1 = 1
zmienna2 = 1

funkcja () {
zmienna1=2
zmienna2=2
}

funkcja
echo $zmienna1
echo $zmienna1


i Tutaj dostaję 1 i 1 a potrzebuję dostać 2 i 2 :(

_________________
Ludzie często, zamiast szukać prostych rozwiązań, komplikują sobie życie...


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: niedziela, 28 sierpnia 2005, 22:57 
Offline
MODERATOR

Rejestracja: piątek, 5 lipca 2002, 17:31
Posty: 2449
Lokalizacja: Londyn
adi pisze:
Dzięki mis' - spróbuję, ale jak mam więcej zmiennych to co wtedy ?? Akurat potrzebuję dwie. Wiem, mogę dwie funkcje napisać, ale ona robi jedną rzecz, także to byłoby trochę bez sensu. :)

Poza tym, u mnie jest tak:

: [/] [] ()
#!/bin/bash
zmienna1 = 1
zmienna2 = 1

funkcja () {
zmienna1=2
zmienna2=2
}

funkcja
echo $zmienna1
echo $zmienna1


i Tutaj dostaję 1 i 1 a potrzebuję dostać 2 i 2 :(


znów bez testów. imho albo dajesz osobną funkcję dla każdej zmiennej, albo tę samą funkcję wywołujesz wielokrotnie z różnymi parametrami i na podstawie tych prametrów określasz zmienną.
ja jednak próbowałbym exportować zmienne (przynajmniej od tego bym zaczął) w funkcji... choć mam niejakie wrażenie że to nie tędy droga...

_________________
Mis'
___________________________________
"Real Men Use Telnet on port 80" (el bid)


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: niedziela, 28 sierpnia 2005, 23:33 
Offline
PGF

Rejestracja: niedziela, 14 lipca 2002, 14:33
Posty: 3234
Lokalizacja: Radziejów
: [/] [] ()
#!/bin/sh
zmienna1=1
zmienna2=1

funkcja () {
zmienna1=2
zmienna2=2
echo zmienna1=$zmienna1>/tmp/smieci
echo zmienna2=$zmienna2>>/tmp/smieci

}

echo $zmienna1
echo $zmienna2

funkcja
. /tmp/smieci
echo $zmienna1
echo $zmienna2




: [/] [] ()
root@serwer:~/temp$./zzz
1
1
2
2

_________________
Nie jestem NEKROMANTĄ, nie wróżę z flaków!
Alkohol pity z umiarem nie szkodzi nawet w największych ilościach!
Przeczytaj nim zapytasz
Obrazek


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: poniedziałek, 29 sierpnia 2005, 01:49 
Offline
MODERATOR

Rejestracja: poniedziałek, 27 stycznia 2003, 23:39
Posty: 3065
Lokalizacja: Kraków/Częstochowa
u mnie też ok
: [/] [] ()
[root@Komp_2 tmp]# cat test ; sh test
#!/bin/bash
zmienna1=1
zmienna2=1

funkcja () {
zmienna1=2
zmienna2=2
}

funkcja
echo $zmienna1
echo $zmienna1

2
2


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: poniedziałek, 29 sierpnia 2005, 02:11 
Offline
MODERATOR

Rejestracja: piątek, 5 lipca 2002, 17:31
Posty: 2449
Lokalizacja: Londyn
zciech pisze:
: [/] [] ()
#!/bin/sh
zmienna1=1
zmienna2=1

funkcja () {
zmienna1=2
zmienna2=2
echo zmienna1=$zmienna1>/tmp/smieci
echo zmienna2=$zmienna2>>/tmp/smieci

}

echo $zmienna1
echo $zmienna2



funkcja
. /tmp/smieci
echo $zmienna1
echo $zmienna2




: [/] [] ()
root@serwer:~/temp$./zzz
1
1
2
2


pozwól że zadam niedyskretne pytanie - a jak te zmienne będziesz modyfikował(*)? bo bez sed czy awk będzie ciężko...

(*) zmienna jaka jest każdy widzi... jak kobieta - zmienna :-)

_________________
Mis'
___________________________________
"Real Men Use Telnet on port 80" (el bid)


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: poniedziałek, 29 sierpnia 2005, 12:09 
Offline
PGF

Rejestracja: niedziela, 14 lipca 2002, 14:33
Posty: 3234
Lokalizacja: Radziejów
To pytanie do mnie?

Jeli tak to:

Nie mam zamiaru niczego modyfikowac to bedzie robila funkcja adi-ego, co kolwiek ma robic niech robi byle na koncu miala że
a=cos co obliczyla
b=drugie cos co obliczyla
echo zmienna1=$a>/tmp/smieci
echo zmienna2=$b>>/tmp/smieci

i co ma do tego sed czy awk ?

Pytanie nie bylo jak modyfikowac zmiene tylko jak przekazac wartosc zmienych z funkcji. Nie twierdze ze to najlepsze rozwizanie ( w koncu potrzebny jest dodatkowy plik), nie jestem wybitnym specjalistą od shela i basha

ADI
Cytuj:
i Tutaj dostaję 1 i 1 a potrzebuję dostać 2 i 2 Sad

Bardzo dziwne ale podobnie jak maciek ja tez dostaje 2 i 2 :)

Chodz w swietle ostatnich badan wynika, że funkcja przekazuje modyfikowane zmienne :)

_________________
Nie jestem NEKROMANTĄ, nie wróżę z flaków!
Alkohol pity z umiarem nie szkodzi nawet w największych ilościach!
Przeczytaj nim zapytasz
Obrazek


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: poniedziałek, 29 sierpnia 2005, 13:50 
Offline
MODERATOR

Rejestracja: piątek, 5 lipca 2002, 17:31
Posty: 2449
Lokalizacja: Londyn
zciech pisze:

Nie mam zamiaru niczego modyfikowac to bedzie robila funkcja adi-ego, co kolwiek ma robic niech robi byle na koncu miala że
a=cos co obliczyla
b=drugie cos co obliczyla
echo zmienna1=$a>/tmp/smieci
echo zmienna2=$b>>/tmp/smieci

i co ma do tego sed czy awk ?


Może błędnie założyłem, że w /tmp/smieci robisz "magazyn" zmiennych, tam piszesz i stamtąd je pobierasz. I wtedy jeśli mamy więcej niż jedną zmienną modyfikacja dowolnej zmiennej wymaga awk lub seda działąjącego na tym pliku. A to nie jest najlepszym rozwiązaniem ze względu na dodatkowe procesy, które musisz wywołać i niepotrzebną komplikację scriptu...

_________________
Mis'
___________________________________
"Real Men Use Telnet on port 80" (el bid)


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: poniedziałek, 29 sierpnia 2005, 16:38 
Offline
MODERATOR

Rejestracja: poniedziałek, 27 stycznia 2003, 23:39
Posty: 3065
Lokalizacja: Kraków/Częstochowa
Misiu moim zdaniem Zciech chciał po prostu pokazać co zawiera zmienna w przed wykonanim, i po wykonaniu funkcji.


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: poniedziałek, 29 sierpnia 2005, 17:04 
Offline
MODERATOR

Rejestracja: piątek, 5 lipca 2002, 17:31
Posty: 2449
Lokalizacja: Londyn
MAC!EK pisze:
Misiu moim zdaniem Zciech chciał po prostu pokazać co zawiera zmienna w przed wykonanim, i po wykonaniu funkcji.


pomyśl co robi ten fragment:

: [/] [] ()
funkcja
. /tmp/smieci
echo $zmienna1
echo $zmienna2

_________________
Mis'
___________________________________
"Real Men Use Telnet on port 80" (el bid)


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: poniedziałek, 29 sierpnia 2005, 23:29 
Offline
MODERATOR

Rejestracja: poniedziałek, 27 stycznia 2003, 23:39
Posty: 3065
Lokalizacja: Kraków/Częstochowa
no tak chyba to przeoczyłem


Na górę
 Wyświetl profil  
 
Wyświetl posty nie starsze niż:  Sortuj wg  
Nowy temat Odpowiedz w temacie  [ Posty: 14 ] 

Strefa czasowa UTC+2godz.


Kto jest online

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


Nie możesz tworzyć nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Przejdź do:  
cron
Technologię dostarcza phpBB® Forum Software © phpBB Group
Hosting: Compus-Net
RobertKonik.pl