EPIC4 Manual


Oprócz '$' bardzo ważne s± dwa znaki: '\' (backshash) oraz ';' (¶rednik), dlatego warto opanować ich zastosowania, aby unikać w sumie głupich błędów w składni.

Backshash

Służy do cytowania innych znaków 'znacz±cych'. Aby uzyskać sam '\' należy także go zacytować. Pare przykładów:


@ blah = [PokemonZ]

[1] /eval echo $blah
[2] /eval echo \$blah
[3] /eval echo \
[4] /eval echo \P\i\k\a\c\h\u
[5] /eval echo :-\)

[1] PokemonZ
[2] $blah
[3]
[4] Pikachu
[5] :-)


[1] chyba nie wymaga tłumaczeń.
W [2] zacytowano znak '$' i nie został on zinterpretowany jako odno¶nik do nazwy zmiennej.
[3] jest puste, gdyż aby uzyskać w echo jeden znak '\', należy go podać dwukrotnie: '\\'
Z tej samej przyczyny w [4] żaden backshash nie jest widoczny.
W [5] bez '\' wywaliłoby komunikat o Ľle zamkniętym nawiasie

A jak się uporać z czymś takim: Chcemy skorzystać z ON window, aby zareagować na takie coś (załóżmy, że coś się z naszym serverem złego stało i co chwile wywala nam taki nieprzyjemny text na erkan). Oczywiście lepiej jest zająć sie przyczynami niż objawami, ale załóżmy, że tylko nie chcemy tego oglądać.


*** 'tty': unknown terminal type.

Poniższy zapis niewiele pomoże, bo będzie likwidował każdy text zawierające to wyrażenie, nawet powiedziane przez kogoś na kanale:

on ^window "% *** 'tty': unknown terminal type." #

Tego więc też nie zobaczymy:
<lamer> Co to znaczy taki text? *** 'tty': unknown terminal type.



Dlatego należy tu zacytować znaki '*' (gwiazdki)

on ^window "% \*\*\* 'tty': unknown terminal type." #

Ciekwie zaczyna sie robić, gdy zechcemy użyć polecenia userhost. Przykład aliasa specjalnie taki głupi, żeby zwrócić uwagę na pare innych spraw.


Załóżmy, że jest sobie PiKaChU!pika@pokemon.pl

/alias ktoty userhost $3 -cmd echo *** $0 ($3@$4)
/ktoty A B C D pikachu

'*** @ '


Proszę zwrócić uwagę, że $3 jest zarówno naszym szukanym nickiem, jak i loginem w userhost wyniku polecenia userhost. Dlaczego?
Otóż, to że w aliasie zmienna $3 co¶ oznacza, wcale nie rzutuje na zmienn± wynikow± polecenia userhost, gdyż nasz alias dawno się skonczy (i znikn± jego argumenty $0-) zanim otrzymamy odpowiedĽ od polecenia userhost (który będzie mieć juz własne arumenty $0-, zupełnie różne od argmentów w naszym aliasie, który je wywołał).
W zasadzie oczwkiwaliby¶my, żeby pokazało się nam '*** PiKaChU (pika@pokemon.pl)'. Ale nic z tego, bo popełniono pare błędów:
1. niecytowane nawiasy '()'
2. niecytowane numery interesuj±cych nas argumentów z wyniku polecenia userhost

Zobaczmy co wyjdzie z czego¶ takiego:


/alias ktoty userhost $3 -cmd echo *** \$0 \(\$3@\$4\)
/ktoty A B C D pikachu

'*** PiKaChU ($3@$4)'


Prawie dobrze, tylko nawiasy po wykonaniu userhost znów będ± '(' i ')', a powinny być '\(' i '\)'. A jak pamiętamy, aby uzyskać znak '\' należy go również zacytować. Czyli uzyskamy w końcu takę hybrydę:


/alias ktoty userhost $3 -cmd echo *** \$0 \\\(\$3@\$4\\\)
/ktoty A B C D pikachu

'$' można jeszcze cytować w tym przypadku w inny sposób:

/alias ktoty userhost $3 -cmd echo *** $$0 \\\($$3@$$4\\\)
/ktoty A B C D pikachu

W obu przypadkch uzyskamy '*** PiKaChU (pika@pokemon.pl)'


Kiedy lepiej używać '$$zmienna' a kiedy '\$zmienna', zależy od budowy funkcji/aliasa (bo nie zawsze się da je zamiennie stosować). Generalnie, trzeba próbować różnych metod. :-)

W kodzie skryptu, dla bezpieczeństwa dobrze jest cytować takie znaki jak: " ' \ | [ ] ( )

Backshash może także być używany do dzielenia linii w kodzie skryptu. Dwie metody zapisu tego samego:


alias blah {
   if (costam && gdziestam && ktostam && komustam && zkimstam) {
      [tutaj jakies bzdety]
   }
}

alias blah {
   if (costam && gdziestam \
   ktostam && komustam \
   zkimstam) {
      [tutaj jakies bzdety]
   }
}


Ale o tym, jak z tego dokładniej korzystac, poczytaj w rodziale Jak pisac nie należy



¦rednik

¦rednik ';' służy do oddzielania poleceń, dlatego w zasadzie dobrze jest unikać jego stosowanie np w echo, a je¶li już, to napewno cytować '\'.


/eval echo *** Pokemony sa w zasadzie male ;-)

Pojawi ¶ie '*** Pokemony sa w zasadzie male' oraz komunikat o braku polecenia '-)'. Poprawnie należy to zrobić tak:

/eval echo *** Pokemony sa w zasadzie male \;-)

Przykład aliasa z wykorzystaniem ¶redników:


alias pika unless ([$1]) {echo *** Eee?;return};@ ble = [$0];@ bla = [$1]

Dobra sprawa, jeżeli chodzi o krótkie aliasy czy ONy.

Ale o tym, jak z tego dokładniej korzystac, poczytaj w rodziale Jak pisac nie należy



Wstęp Home Następny Paragraf