##
## Domaci ukol:
## 

# 1)
cat lide.txt | sed -n 'N;N;/\nmirek .*\n/s/.*\n//p;'
# zkuste s l
cat lide.txt | sed -n 'N;N;l;/\nmirek .*\n/s/.*\n//p;'

# 2) obdobne, predzpracovani orezanim
# 	 podminku s pameti lze vyresit tridenim podle 2 sloupcu

#####
##### Cviceni
#####

#
# kde vsude je definovana promenna?
#

# jen v aktualnim shelu (procesu)!
# pokud to chcete i synovskych (jinych nez sub-shelech,
# ty po forku dostanou kopii prostredi a nezahodi ji), tak pouzijte export

# bezny usecase
p="Ahoj svete"; echo "$p"						# Ahoj svete
# {} jsou jen blok prikazu v aktualnim shellu
p="Ahoj svete"; { echo "$p" ; }					# Ahoj svete
# sub shell () je child-process, ale ma podedeny cely ENVIRONMENT
p="Ahoj svete"; ( echo "$p" ; )					# Ahoj svete
# child-process
p="Ahoj svete"; sh -c 'echo "$p"'   			# <nic>
# child-process, pridame p do ENV
export p="Ahoj svete"; sh -c 'echo $p' 			# Ahoj svete
# child-process, podivejme se na obsah env
export p="Ahoj svete"; sh -c 'env | grep "^p"'

# Q: co predavani promennych zpet?
# A: nejde (jen ve variante, kdy vse bezi v ramci jednoho shellu),
#	 pouzijte pomocne soubory


# Q: jak se lisi ? 
# A: (ten s teckou se provede v puvodnim shelu (tzn i meni promenne),
#    na bez tecky se spousti subshel)
./skript.sh
. ./skript.sh


# napiste funkci, ktera zkontroluje, jestli je string na vstupu "$1" ALLCAPS
# vrati 0 kdyz je
# 1 kdyz ne 

is_allcaps () {
    echo "$1" | grep -q '^[A-Z]*$'
    return $?
}

# pouziti

is_allcaps 'TOHLEJEALLCAPS' && echo 'jo' || echo 'ne'
is_allcaps 'aTOHLENENIALLCAPS' && echo 'jo' || echo 'ne'

#
# ps/pid/kill/trap & signaly
#

# vyrobte si skript, ktery bude spat 100 sekund a zkuste ho z jineho terminalu zabit

cat > spi.sh <<KONEC
#!/bin/sh
echo $$
sleep 100
KONEC
chmod +x spi.sh

./spi.sh

kill 12345 	# 12345 je PID, ktery vypise spi.sh po spusteni
# vypsat vsechny mozne signaly
kill -l

# totez, ale udelejte to tak, aby nesel zabit pomoci SIGTERM
# pomoci prikazu trap

cat > spi.sh <<KONEC
#!/bin/sh
trap "echo 'signal SIGTERM 15 caught'" SIGTERM
echo $$
sleep 100
KONEC

# proc po poslani 15 nevypise spi.sh zpravu okamzite?

# z MAN 
# If  bash  is waiting for a command to complete and receives a signal for
# which a trap has been set, the trap will not be executed until the  com‐
# mand  completes. 

# varianty kill
kill 1234 # pouzite default SIGTERM (15)
kill -s TERM 1234
kill -s SIGTERM 1234
kill -15 1234
