EPIC4 Manual


Wyrażenia specjalne

Operatory

zapisznaczenie
$varWartości $var będą szukane w kolejności:
1. wartość zmiennej utworonej przez ASSIGN, LOCAL lub @
2. wartość wewnętrznej zmiennej clienta SET
3. wartość zmiennej z otoczenia (shell)
4. nic
$[num]varnum pierwszych (lub ostatnich dla num < 0) znaków zmiennej $var
$#varilość słów w zmiennej $var
$@varilość znaków w zmiennej $var
$(subvar)wartość zmiennej, która nazywa się tak samo, jaką wartość przyjmuje zmienna $subvar
${var}wartość zmiennej $var -- czasem taki zapis jest niezbędny
$!history!wartość textów pisanych w INPUT pasujących do wzoru history
$"jakis text"wpisuje jakis text w input_prompt i przyjmue wartość jaką wpiszemy. Lepiej tutaj uźywać input


Weźmy trzy zmienne...

@ test = [Poket Monsters]
@ jojo = [blah]
@ blah = [Pikachu]
@ num = 123

/eval echo $blah            /* pojawi się cała wartość zmiennej 'Pikachu' */
/eval echo $[3]blah         /* 3 pierwsze litery zmiennej to 'Pik' */
/eval echo $[-1]test        /* 1 litera od końca to 's' */
/eval echo $#test           /* ilość słów w zmiennej, czyli '2' */
/eval echo $@blah           /* ilość liter to '7' */
/eval echo $(jojo)          /* wartość zmiennej $blah -- zobacz opis niżej */
/eval echo eee$Seee         /* źle, bo będzie szukać zmiennej '$Seee' */
/eval echo eee${S}eee       /* teraz dobrze, np: 'eeelublin.irc.pleee' */
/eval echo ${$num + 5}      /* źle, za dużo o znak $ w '$num' */
/eval echo ${num + 5}       /* teraz dobrze, jeden $ na całe wyrażenie */


Żeby jeszcze troche zamieszać, rozważmy dokładnie co oznacza taki zapis jak '$($subvar)'. Jak nietudno (?) się domyśleć, oznacza to wartośc zmiennej o nazwie odpowiadającej wartości zmiennej $subvar. :-)


@ blah = [Pika pika pikachu!]
@ abc = [blah]

/eval echo $blah
/eval echo $($abc)

W obu przypadkach pojawi się text 'Pika pika pikachu!'


Może to nie jest koniecznie niezbędne do pisania skryptów, jednak często znacznie ułatwia sprawę. Inny przykład:


/ble A B C D E F

alias ble {
   for i in ([$0-]) {
      echo *** $($i)
   }
}

Wynikiem będą wartości poszczególnych zmiennych specjalnych.




Zakresy

Zakresy argumentów w aliasach, ONach.

zakreswynik
$*wszystkie argumenty
$nargument numer n (licząc od '0' -- zera)
$n-margumenty od n do m
$n-argument n i wszystkie następne
$-mwszystkie argumenty do m włącznie
$~ostatni argument

Jako-taki przykład na samym dole w zmiennych.



Patterns

znakwartość
*zero lub więcej znaków
%zero lub więcej znaków z wyjątkiem spacjami
?jeden znak


Mamy text 'Pikachu jest zolty'

P*                             /* OK, pasuje */
Pika%                          /* źle, tam są spacje przecież */
Pika% % %                      /* teraz OK */
P?k?ach? *                     /* OK */
Pikachu ??? ???????            /* źle, za duzo '?' w ostatnim słowie */




Wstęp Home Następny Paragraf