# [SOLVED] [BASH] wstawki z perla + przekazywanie argumentow

## soban_

Tak jak w temacie, chce w skrypcie bashowym dac wstawke z perla.  Chcialbym wszystko zachowac w jednym pliku bez tworzenia pobocznych, problem polega na przekazaniu parametrow do skryptu:

```
#!/bin/bash

perl <<'EOF'

        print "Jakis komunikat\n";

EOF

exit 0
```

No i to ladnie smiga, jednak jak prazekazac cos takiego:

```
#!/bin/bash

perl <<'EOF'

        print "Jakis komunikat: $1 $2 $3\n";

EOF
```

No i tutaj wywala blad, moglbym w skrypcie perla zrobic funkcja($ARGV[1],$ARGV[2],$ARGV[3]); jednak jak to wykrzesac zeby pobieral to z basha podczas wywolania? Tak wiem, moge np przez echo zapisac to do pliku, a pozniej odpalic plik z perla juz z parametrami. Jednak jak to zrobic w jednym pliku ze skryptem?

----------

## Jacekalex

A po kiego tobie bash do odpalania perla?

Weź zamiast basha całosć zrób w perlu, i nie będziesz miał klopotu z argumentami.

Zawsze też możesz z basha odpalić w typie 

```
env ZMIENNA1="x" ZMIENNA2="y" skrypt_perla
```

 i potem w perlu odczytać zmienne,

 choć zbyt wielkiego sensu w tym nie ma.

Prościej sobie poradzisz samym perlem, bez basha.

Pozdrawiam

 :Cool: Last edited by Jacekalex on Sun Jun 24, 2012 2:46 pm; edited 2 times in total

----------

## soban_

No wlasnie tez tak mysle, problem w tym ze duzo musialbym do perla teraz z basha przepisac...a ta wstawka nie jest az tak mega skomplikowana, no tyle ze tych argumentow wymaga.

----------

## Jacekalex

Ten skrypt jest jakiś mega tajny, czy kosmicznie skomplikowany?

Bo ja jak mam skrypt kilkulinijkowy, albo np wykonujący jakieś proste akcje, czy cośtam montujący, to może być w bashu.

Ale jak mam coś robić dłuższego - w senscie linii "funkcyjnych" czy ryzyka użycia w przyszłosci np tablicy asocjacyjnej, sqla, czy jakiegoś mega skompilowanego regexa, to do basha się nawet nie zbilżam, tylko od razu biorę perla.

Plik tymczasowy w ramdysku może być tworzony, choć to ciężkie lamerstwo, już chyba prościej Ci pójdzie zmiennymi, jak argumenty nie wchodzą.

Pozdrawiam

 :Cool: Last edited by Jacekalex on Sun Jun 24, 2012 4:54 pm; edited 1 time in total

----------

## soban_

Tzn powiem Ci tak, dlugo go pisalem (dopisujac w trakcie co bylo potrzebe na dana chwile) i jest w pelni funkcjonalny ma 426 linijek (to sa glownie jakies tam funkcje dopisywane na szybko) no i ze bash troche mnie ogranicza potrzebuje troche skorzystac z perla. Problem w tym ze ten skrypt duzo wykonuje komed linuxowych wiec wszystko musialbym do perla przepisac uzywajac funkcji system.

----------

## Jacekalex

Pojedyncze funkcje przepisać - nie jest to jakaś super magia.

Poskładać do kupy - wykonalne.

Na przyszłość, jak coś ma być dłuższe niż 50 linii - docelowo, to bierz od razu perla albo pythona.

Na razie możesz wywoływać nie kod, ale zewn skrypt perlowy, i powinno ruszyć.

Ja osobiście wolę sobie w skryptach robić wyjście błędu z komunikatem na maila lub jabbera, jeśli taki skrypt ma robić coś większegoo lub ważnego.

Niestety modułów do gadu, jabbera, czy SMTP do basha nie widziałem.   :Very Happy: 

Zwłaszcza  np bakcupy robione w tle, i zrzuty baz danych.

Wolę wiedzieć na bierząco, jak wygląda bajzel.   :Twisted Evil: 

A w perlu masz system, exec i fork, także jest w czym wybierać.   :Smile: 

Pozdrawiam

 :Cool: 

----------

## SlashBeast

zamiast <<'EOF' daj <<EOF, bez ciapek bedzie resolvowac zawartosc tego bloku.

----------

## soban_

No i SOLVED, @Jacekalex a mozesz bardziej przedstawic jak to widziales z ciekawosci na ramdysku? W sensie jakis example albo cus.

----------

## Jacekalex

 *soban_ wrote:*   

>  @Jacekalex a mozesz bardziej przedstawic jak to widziales z ciekawosci na ramdysku? W sensie jakis example albo cus.

 

Np tak:

```

tmpfs        /var/tmp   tmpfs   noatime,mand,size=3G,mode=1777     0   0

tmpfs       /tmp       tmpfs   noatime,nosuid,nodev,noexec,mode=1777   0  0
```

To z mojego /etc/fstab.

Sznurek: http://www.kernel.org/doc/Documentation/filesystems/tmpfs.txt

Pozdrawiam

 :Cool: 

----------

