Nowe posty

Autor Wątek: przekazanie tablicy wypelnionej w bashu funkcji napisanej w bc  (Przeczytany 8403 razy)

s.a.r.a

  • Gość
Witam.
Jak mozna przekazac tablice wypelniona floatami przez bash do zewnetrznej funkcji w bc, liczacej - powiedzmy - minimum czy srednia?...

Probowalam:
$( echo "min(${tablica
  • })"  | bc -l minimum ),

gdzie minimum to nazwa pliku, w ktorym zapisana jest f-cja min, ale dostaje parse error.

Probowalam:
$( echo "min(tablica[])"  | bc -l minimum ),
ale przekazana tablica jest pusta.

$( echo "min($tablica[])"  | bc -l minimum ),
ale tez jest parse error.

Wie ktos, jak te tablice podrzucic funkcji?..

xis

  • Gość
przekazanie tablicy wypelnionej w bashu funkcji napisanej w bc
« Odpowiedź #1 dnia: 2007-11-09, 14:33:33 »
Wydaje mi się, że przyczyną złej pracy Twojego skryptu jest fakt, że bash interpretuje znaki '[' i ']' (jeśli używasz cudzysłowu, to bash będzie interpretował wszystko, co się z nim zawiera, jeśli używasz apostrofu, to bash będzie używał dosłownego cytowania), a te nawiasy są znakami specjalnymi dla basha.
Spróbuj zamiast '[' użyć '\\[', a zamiast ']' - '\\]'.

xavery

  • Gość
przekazanie tablicy wypelnionej w bashu funkcji napisanej w bc
« Odpowiedź #2 dnia: 2007-11-09, 16:01:29 »
Cytat: s.a.r.a
$( echo "min(${tablica
  • })"  | bc -l minimum ),
Nie znam się na bc ale odwołanie do wszystkich elementów w bashu to ${tablica
  • } lub ${tablica
  • }. W tym przypadku klamerki {} są konieczne. Inna sprawa czy bc rozumie taki zapis - tego nie wiem.

xavery

  • Gość
przekazanie tablicy wypelnionej w bashu funkcji napisanej w bc
« Odpowiedź #3 dnia: 2007-11-09, 16:15:51 »
Hm... nie mogę usunąć ani zmienić swojego poprzedniego postu bo:
Cytuj
Złe HTTP_REFERER. Próbowałeś się dostać do tej strony z nieznanego źródła. Jeśli problem nadal istnieje to upewnij się, że 'Base URL' jest poprawnie ustawiona w Admin/Opcje. Wszelkie problemy są opisane w dokumentacji punBB.
a dopiero po napisaniu zauważyłem, że klamerki w istocie się znajdują.

Błąd moim zdaniem leży w zawarciu polecenia w podstawieniu $(). W takim polecenie wewnątrz nawiasów jest wykonywane a jego wynik jest wykonywany ponownie przez shell. I to może jest (aczkolwiek nie musi być) przyczyną błędu parsowania

s.a.r.a

  • Gość
przekazanie tablicy wypelnionej w bashu funkcji napisanej w bc
« Odpowiedź #4 dnia: 2007-11-09, 21:17:11 »
Dziekuje bardzo za odpowiedzi! Niestety, ani backslash'e, ani wydanie polecenia bez $() nie pomoglo :(
Poradzilam sobie inaczej, po prostu iterujac po tablicy bashowej i wypeniajac nowa tablice w bc:

      m=0
      for wart in `echo ${tab_bash
  • }`

      do
         tmp="$tmp""tab_bc[$m]=$wart; "
         m=$[$m+1]
      done
      echo "$tmp""min(tab_bc[])"  | bc -l minimum
 Moze glupie, ale nie umiem inaczej.
Tak na marginesie - da sie w ogole dostac w bashu do tablicy jako zmiennej (nie do listy jej wartosci)?.. $tablica zwraca pusty wynik.. Chodzi mi wlasnie o przekazywanie tablicy przez zmienna do innego programu.

norbert_ramzes

  • Gość
przekazanie tablicy wypelnionej w bashu funkcji napisanej w bc
« Odpowiedź #5 dnia: 2007-11-09, 21:27:25 »
Aż mnie ciarki po plecach przechodzą jak czytam jakie skrypty dziewczyny potrafią pisać :)

s.a.r.a

  • Gość
przekazanie tablicy wypelnionej w bashu funkcji napisanej w bc
« Odpowiedź #6 dnia: 2007-11-09, 21:33:49 »
A coz Ci sie nie podoba w moim skrypcie?...

norbert_ramzes

  • Gość
przekazanie tablicy wypelnionej w bashu funkcji napisanej w bc
« Odpowiedź #7 dnia: 2007-11-09, 21:38:38 »
Nie o to mi chodziło. Chodziło o to że sam takich skryptów nie umiem pisać bo nigdy nie chciało mi się nauczyć :)

s.a.r.a

  • Gość
przekazanie tablicy wypelnionej w bashu funkcji napisanej w bc
« Odpowiedź #8 dnia: 2007-11-09, 21:42:34 »
Ah ok, zle Cie zrozumialam ;)