Jogg.About::$Me->RaVbaker

 

27

maja

2009

« SEO i bookmarklety MySQL vs. RaVbaker - 0:2 »

BASHowa zagadka

Dzisiaj będzie krótka programistyczno-uniksowa zagadka

Jak mając jeden skrypt w bashu sprawić, aby wykonał on najpierw jakieś operacje interaktywne, np. pobiera dane od użytkownika, operuje na jakiś plikach, a następnie w połowie sam przeszedł do działania w tło (np. parsując długo jakiś tekst)?

Nagroda nie jest przewidziana, ale satysfakcja zawsze

Powodzenia!

 

Komentarze

 
 
 

№ 1

27 maja 2009, 23:01:15

Michał Górny

Użycie funkcji się liczy?

 
 
 

№ 2

27 maja 2009, 23:04:58

Rafał Piekarski

Tak, można używać funkcje.

 
 
 

№ 3

27 maja 2009, 23:08:50

Caladan

Skrypt może składać się z dwóch części, wybór części zależny jest na przykład od obecności parametru.

Wpierw więc wywołujemy sobie ./skrypt.sh, a potem skrypt sam uruchamia siebie w tle:
./shrypt.sh bgmode=1 &
a pozostała część się kończy normalnie.

 
 
 

№ 4

27 maja 2009, 23:09:54

Worm

Well, ‘bg’?

 
 
 

№ 5

27 maja 2009, 23:16:57

Michał Górny

@Worm: That won’t work, Sir.

W momencie, gdzie ma przejść w tło robisz całość jako funkcję, np:

#!/bin/sh
read a
(
sleep 10
echo $a
) &

Swoją drogą, tu nie można śledzić wątku?

 
 
 

№ 6

27 maja 2009, 23:23:28

Rafał Piekarski

Rozwiązanie moje to drugi skrypt uruchamiany w ostatniej linijce z backgroundową częścią zadania.

Ale rozwiązanie Michała z nawiasami i potem & wygląda mi idealnie. :-)

A może macie jeszcez trzecią drogę?

 
 
 

№ 7

27 maja 2009, 23:49:37

Paweł Ciupak

Trzecia droga? Można np. tak:

#!/bin/sh
read a
wieder(){
sleep 2
echo $a
}
wieder &

 
 
 

№ 8

28 maja 2009, 01:48:34

Minio

Problemy z zaliczeniem?

BP, NMSP

 
 
 

№ 9

28 maja 2009, 08:50:09

Rafał Piekarski

Nie, ot takie zadanie, które pojawiło się mojemu koledze na drodze do zaliczenia Systemów Operacyjnych na PG.

 
 
 

№ 10

28 maja 2009, 10:52:03

dredzik

Jej, to u nas na PG są teraz takie ambitne zadania? Ja to pisałem skrypt konfiguracyjny do cdlinuksa…

 
 
 

№ 11

28 maja 2009, 10:53:37

Rafał Piekarski

Na zaocznych 4ty semestr z ETI kolega miał taki problem.

 
 
 

№ 12

28 maja 2009, 14:11:23

sinx

o ile sie nie myle:

jesli jest zadeklarowana jkas funckja to mozna ja odpalic z „nohup”.
bash -c „exec nohup setsid komenda”

 
 
 

№ 13

28 maja 2009, 14:14:48

sinx

oczywiscie zapomnialem o przekierowanu wyjscia ;)

bash -c „exec nohup setsid komenda” > /dev/null 2>&1 &

 
 
 

№ 14

28 maja 2009, 21:22:27

eL

Fajne to z wywołaniem funkcji plus `ampersand`... Niewiedziałem, że
tak można.

 
 
 

Dodaj komentarz

 

Podpis

 

URL

 

Treść
(z textile)

 
 
 
 

Flakoblog