$ { # v a r n a m e }
I t r e t u r n s t h e l e n g t h o f t h e v a l u e o f t h e v a r i a b l e a s a c h a r a c t e r s t r i n g .
P a t t e r n - M a t c h i n g O p e r a t o r s
$ { v a r i a b l e # p a t t e r n }
I f t h e p a t t e r n m a t c h e s t h e b e g i n n i n g o f t h e v a r i a b l e ' s v a l u e , d e l e t e t h e s h o r t e s t p a r t t h a t m a t c h e s a n d r e t u r n t h e r e s t .
$ { v a r i a b l e # # p a t t e r n }
I f t h e p a t t e r n m a t c h e s t h e b e g i n n i n g o f t h e v a r i a b l e ' s v a l u e , d e l e t e t h e l o n g e s t p a r t t h a t m a t c h e s a n d r e t u r n t h e r e s t .
$ { v a r i a b l e % p a t t e r n }
I f t h e p a t t e r n m a t c h e s t h e e n d o f t h e v a r i a b l e ' s v a l u e , d e l e t e t h e s h o r t e s t p a r t t h a t m a t c h e s a n d r e t u r n t h e r e s t .
$ { v a r i a b l e % % p a t t e r n }
I f t h e p a t t e r n m a t c h e s t h e e n d o f t h e v a r i a b l e ' s v a l u e , d e l e t e t h e l o n g e s t p a r t t h a t m a t c h e s a n d r e t u r n t h e r e s t .
$ { v a r i a b l e / p a t t e r n / s t r i n g } $ { v a r i a b l e / / p a t t e r n / s t r i n g }
T h e l o n g e s t m a t c h t o p a t t e r n i n v a r i a b l e i s r e p l a c e d b y s t r i n g . I n t h e f i r s t f o r m , o n l y t h e f i r s t m a t c h i s r e p l a c e d . I n t h e s e c o n d f o r m ,
a l l m a t c h e s a r e r e p l a c e d . I f t h e p a t t e r n i s b e g i n s w i t h a # , i t m u s t m a t c h a t t h e s t a r t o f t h e v a r i a b l e . I f i t b e g i n s w i t h a % , i t m u s t
m a t c h w i t h t h e e n d o f t h e v a r i a b l e . I f s t r i n g i s n u l l , t h e m a t c h e s a r e d e l e t e d . I f v a r i a b l e i s @ o r * , t h e o p e r a t i o n i s a p p l i e d t o e a c h
p o s i t i o n a l p a r a m e t e r i n t u r n a n d t h e e x p a n s i o n i s t h e r e s u l t a n t l i s t . a
E x p r e s s i o n R e s u l t
$ { p a t h # # / * / } l o n g . f i l e . n a m e
$ { p a t h # / * / } c a m / b o o k / l o n g . f i l e . n a m e
$ p a t h / h o m e / c a m / b o o k / l o n g . f i l e . n a m e
$ { p a t h % . * } / h o m e / c a m / b o o k / l o n g . f i l e
$ { p a t h % % . * } / h o m e / c a m / b o o k / l o n g
S u b s t i t u t i o n O p e r a t o r s
$ { v a r n a m e : - w o r d }
I f v a r n a m e e x i s t s a n d i s n ' t n u l l , r e t u r n i t s v a l u e ; o t h e r w i s e r e t u r n w o r d .
P u r p o s e :
R e t u r n i n g a d e f a u l t v a l u e i f t h e v a r i a b l e i s u n d e f i n e d .
E x a m p l e :
$ { c o u n t : - 0 } e v a l u a t e s t o 0 i f c o u n t i s u n d e f i n e d .
$ { v a r n a m e : = w o r d }
I f v a r n a m e e x i s t s a n d i s n ' t n u l l , r e t u r n i t s v a l u e ; o t h e r w i s e s e t i t t o w o r d a n d t h e n r e t u r n i t s v a l u e . P o s i t i o n a l a n d s p e c i a l p a r a m e t e r s
c a n n o t b e a s s i g n e d t h i s w a y .
P u r p o s e :
S e t t i n g a v a r i a b l e t o a d e f a u l t v a l u e i f i t i s u n d e f i n e d .
E x a m p l e :
$ { c o u n t : = 0 } s e t s c o u n t t o 0 i f i t i s u n d e f i n e d .
$ { v a r n a m e : ? m e s s a g e }
I f v a r n a m e e x i s t s a n d i s n ' t n u l l , r e t u r n i t s v a l u e ; o t h e r w i s e p r i n t v a r n a m e : f o l l o w e d b y m e s s a g e , a n d a b o r t t h e c u r r e n t c o m m a n d o r s c r i p t
( n o n - i n t e r a c t i v e s h e l l s o n l y ) . O m i t t i n g m e s s a g e p r o d u c e s t h e d e f a u l t m e s s a g e p a r a m e t e r n u l l o r n o t s e t .
P u r p o s e :
C a t c h i n g e r r o r s t h a t r e s u l t f r o m v a r i a b l e s b e i n g u n d e f i n e d .
E x a m p l e :
{ c o u n t : ? " u n d e f i n e d ! " } p r i n t s " c o u n t : u n d e f i n e d ! " a n d e x i t s i f c o u n t i s u n d e f i n e d .
$ { v a r n a m e : + w o r d }
I f v a r n a m e e x i s t s a n d i s n ' t n u l l , r e t u r n w o r d ; o t h e r w i s e r e t u r n n u l l .
P u r p o s e :
T e s t i n g f o r t h e e x i s t e n c e o f a v a r i a b l e .
E x a m p l e :
$ { c o u n t : + 1 } r e t u r n s 1 ( w h i c h c o u l d m e a n " t r u e " ) i f c o u n t i s d e f i n e d .
$ { v a r n a m e : o f f s e t }
$ { v a r n a m e : o f f s e t : l e n g t h }
P e r f o r m s s u b s t r i n g e x p a n s i o n . a I t r e t u r n s t h e s u b s t r i n g o f $ v a r n a m e s t a r t i n g a t o f f s e t a n d u p t o l e n g t h c h a r a c t e r s . T h e f i r s t c h a r a c t e r
i n $ v a r n a m e i s p o s i t i o n 0 . I f l e n g t h i s o m i t t e d , t h e s u b s t r i n g s t a r t s a t o f f s e t a n d c o n t i n u e s t o t h e e n d o f $ v a r n a m e . I f o f f s e t i s l e s s t h a n
0 t h e n t h e p o s i t i o n i s t a k e n f r o m t h e e n d o f $ v a r n a m e . I f v a r n a m e i s @ , t h e l e n g t h i s t h e n u m b e r o f p o s i t i o n a l p a r a m e t e r s s t a r t i n g a t p a r a m e t e r o f f s e t .
P u r p o s e :
R e t u r n i n g p a r t s o f a s t r i n g ( s u b s t r i n g s o r s l i c e s ) .
E x a m p l e :
I f c o u n t i s s e t t o f r o g f o o t m a n , $ { c o u n t : 4 } r e t u r n s f o o t m a n . $ { c o u n t : 4 : 4 } r e t u r n s f o o t .
A r r a y i n B a s h
n a m e s = ( [ 2 ] = a l i c e [ 0 ] = h a t t e r [ 1 ] = d u c h e s s )
# n a m e s = ( h a t t e r [ 5 ] = d u c h e s s a l i c e )
n a m e s [ 3 ] = t o m
n a m e s [ 4 ] = j e r r y
f o r i i n " $ { n a m e s [ @ ] } " ; d o
e c h o $ i
d o n e
$ { # a r r a y [ i ] }
I t r e t u r n t h e l e n g t h o f a n y e l e m e n t i n a n a r r a y . T o f i n d o u t h o w m a n y e l e m e n t i n a n a r r a y , y o u c a n u s e $ { # a r r a y [ @ ] } .
N o v e m b e r 2 2 t h T h u r s d a y ( AS N g 0ŒNASŒNåe 0(gÜfåe ÿ
I n t h e B T p r o t o c o l , t h e c o n n e c t i v e r e q u e s t c o n s i s t o f s t r i n g . T h o s e s t r i n g m u s t a b i d e f o l l o w i n g r u l e s .
T h e c o n n e c t i v i t y i s a s f o l l o w s :
* S t r i n g s a r e l e n g t h - p r e f i x e d b a s e t e n f o l l o w e d b y a c o l o n a n d t h e s t r i n g . F o r e x a m p l e 4 : s p a m c o r r e s p o n d s t o ' s p a m ' .
* I n t e g e r s a r e r e p r e s e n t e d b y a n ' i ' f o l l o w e d b y t h e n u m b e r i n b a s e 1 0 f o l l o w e d b y a n ' e ' . F o r e x a m p l e i 3 e c o r r e s p o n d s
t o 3 a n d i - 3 e c o r r e s p o n d s t o - 3 . I n t e g e r s h a v e n o s i z e l i m i t a t i o n . i - 0 e i s i n v a l i d . A l l e n c o d i n g s w i t h a l e a d i n g z e r o ,
s u c h a s i 0 3 e , a r e i n v a l i d , o t h e r t h a n i 0 e , w h i c h o f c o u r s e c o r r e s p o n d s t o 0 .
* L i s t s a r e e n c o d e d a s a n ' l ' f o l l o w e d b y t h e i r e l e m e n t s ( a l s o b e n c o d e d ) f o l l o w e d b y a n ' e ' . F o r e x a m p l e l 4 : s p a m 4 : e g g s e
c o r r e s p o n d s t o [ ' s p a m ' , ' e g g s ' ] .
* D i c t i o n a r i e s a r e e n c o d e d a s a ' d ' f o l l o w e d b y a l i s t o f a l t e r n a t i n g k e y s a n d t h e i r c o r r e s p o n d i n g v a l u e s f o l l o w e d b y
a n ' e ' . F o r e x a m p l e , d 3 : c o w 3 : m o o 4 : s p a m 4 : e g g s e c o r r e s p o n d s t o { ' c o w ' : ' m o o ' , ' s p a m ' : ' e g g s ' } a n d d 4 : s p a m l 1 : a 1 : b e e
c o r r e s p o n d s t o { ' s p a m ' : [ ' a ' , ' b ' ] } . K e y s m u s t b e s t r i n g s a n d a p p e a r i n s o r t e d o r d e r ( s o r t e d a s r a w s t r i n g s , n o t
a l p h a n u m e r i c s ) .
I t r e t u r n s t h e l e n g t h o f t h e v a l u e o f t h e v a r i a b l e a s a c h a r a c t e r s t r i n g .
P a t t e r n - M a t c h i n g O p e r a t o r s
$ { v a r i a b l e # p a t t e r n }
I f t h e p a t t e r n m a t c h e s t h e b e g i n n i n g o f t h e v a r i a b l e ' s v a l u e , d e l e t e t h e s h o r t e s t p a r t t h a t m a t c h e s a n d r e t u r n t h e r e s t .
$ { v a r i a b l e # # p a t t e r n }
I f t h e p a t t e r n m a t c h e s t h e b e g i n n i n g o f t h e v a r i a b l e ' s v a l u e , d e l e t e t h e l o n g e s t p a r t t h a t m a t c h e s a n d r e t u r n t h e r e s t .
$ { v a r i a b l e % p a t t e r n }
I f t h e p a t t e r n m a t c h e s t h e e n d o f t h e v a r i a b l e ' s v a l u e , d e l e t e t h e s h o r t e s t p a r t t h a t m a t c h e s a n d r e t u r n t h e r e s t .
$ { v a r i a b l e % % p a t t e r n }
I f t h e p a t t e r n m a t c h e s t h e e n d o f t h e v a r i a b l e ' s v a l u e , d e l e t e t h e l o n g e s t p a r t t h a t m a t c h e s a n d r e t u r n t h e r e s t .
$ { v a r i a b l e / p a t t e r n / s t r i n g } $ { v a r i a b l e / / p a t t e r n / s t r i n g }
T h e l o n g e s t m a t c h t o p a t t e r n i n v a r i a b l e i s r e p l a c e d b y s t r i n g . I n t h e f i r s t f o r m , o n l y t h e f i r s t m a t c h i s r e p l a c e d . I n t h e s e c o n d f o r m ,
a l l m a t c h e s a r e r e p l a c e d . I f t h e p a t t e r n i s b e g i n s w i t h a # , i t m u s t m a t c h a t t h e s t a r t o f t h e v a r i a b l e . I f i t b e g i n s w i t h a % , i t m u s t
m a t c h w i t h t h e e n d o f t h e v a r i a b l e . I f s t r i n g i s n u l l , t h e m a t c h e s a r e d e l e t e d . I f v a r i a b l e i s @ o r * , t h e o p e r a t i o n i s a p p l i e d t o e a c h
p o s i t i o n a l p a r a m e t e r i n t u r n a n d t h e e x p a n s i o n i s t h e r e s u l t a n t l i s t . a
E x p r e s s i o n R e s u l t
$ { p a t h # # / * / } l o n g . f i l e . n a m e
$ { p a t h # / * / } c a m / b o o k / l o n g . f i l e . n a m e
$ p a t h / h o m e / c a m / b o o k / l o n g . f i l e . n a m e
$ { p a t h % . * } / h o m e / c a m / b o o k / l o n g . f i l e
$ { p a t h % % . * } / h o m e / c a m / b o o k / l o n g
S u b s t i t u t i o n O p e r a t o r s
$ { v a r n a m e : - w o r d }
I f v a r n a m e e x i s t s a n d i s n ' t n u l l , r e t u r n i t s v a l u e ; o t h e r w i s e r e t u r n w o r d .
P u r p o s e :
R e t u r n i n g a d e f a u l t v a l u e i f t h e v a r i a b l e i s u n d e f i n e d .
E x a m p l e :
$ { c o u n t : - 0 } e v a l u a t e s t o 0 i f c o u n t i s u n d e f i n e d .
$ { v a r n a m e : = w o r d }
I f v a r n a m e e x i s t s a n d i s n ' t n u l l , r e t u r n i t s v a l u e ; o t h e r w i s e s e t i t t o w o r d a n d t h e n r e t u r n i t s v a l u e . P o s i t i o n a l a n d s p e c i a l p a r a m e t e r s
c a n n o t b e a s s i g n e d t h i s w a y .
P u r p o s e :
S e t t i n g a v a r i a b l e t o a d e f a u l t v a l u e i f i t i s u n d e f i n e d .
E x a m p l e :
$ { c o u n t : = 0 } s e t s c o u n t t o 0 i f i t i s u n d e f i n e d .
$ { v a r n a m e : ? m e s s a g e }
I f v a r n a m e e x i s t s a n d i s n ' t n u l l , r e t u r n i t s v a l u e ; o t h e r w i s e p r i n t v a r n a m e : f o l l o w e d b y m e s s a g e , a n d a b o r t t h e c u r r e n t c o m m a n d o r s c r i p t
( n o n - i n t e r a c t i v e s h e l l s o n l y ) . O m i t t i n g m e s s a g e p r o d u c e s t h e d e f a u l t m e s s a g e p a r a m e t e r n u l l o r n o t s e t .
P u r p o s e :
C a t c h i n g e r r o r s t h a t r e s u l t f r o m v a r i a b l e s b e i n g u n d e f i n e d .
E x a m p l e :
{ c o u n t : ? " u n d e f i n e d ! " } p r i n t s " c o u n t : u n d e f i n e d ! " a n d e x i t s i f c o u n t i s u n d e f i n e d .
$ { v a r n a m e : + w o r d }
I f v a r n a m e e x i s t s a n d i s n ' t n u l l , r e t u r n w o r d ; o t h e r w i s e r e t u r n n u l l .
P u r p o s e :
T e s t i n g f o r t h e e x i s t e n c e o f a v a r i a b l e .
E x a m p l e :
$ { c o u n t : + 1 } r e t u r n s 1 ( w h i c h c o u l d m e a n " t r u e " ) i f c o u n t i s d e f i n e d .
$ { v a r n a m e : o f f s e t }
$ { v a r n a m e : o f f s e t : l e n g t h }
P e r f o r m s s u b s t r i n g e x p a n s i o n . a I t r e t u r n s t h e s u b s t r i n g o f $ v a r n a m e s t a r t i n g a t o f f s e t a n d u p t o l e n g t h c h a r a c t e r s . T h e f i r s t c h a r a c t e r
i n $ v a r n a m e i s p o s i t i o n 0 . I f l e n g t h i s o m i t t e d , t h e s u b s t r i n g s t a r t s a t o f f s e t a n d c o n t i n u e s t o t h e e n d o f $ v a r n a m e . I f o f f s e t i s l e s s t h a n
0 t h e n t h e p o s i t i o n i s t a k e n f r o m t h e e n d o f $ v a r n a m e . I f v a r n a m e i s @ , t h e l e n g t h i s t h e n u m b e r o f p o s i t i o n a l p a r a m e t e r s s t a r t i n g a t p a r a m e t e r o f f s e t .
P u r p o s e :
R e t u r n i n g p a r t s o f a s t r i n g ( s u b s t r i n g s o r s l i c e s ) .
E x a m p l e :
I f c o u n t i s s e t t o f r o g f o o t m a n , $ { c o u n t : 4 } r e t u r n s f o o t m a n . $ { c o u n t : 4 : 4 } r e t u r n s f o o t .
A r r a y i n B a s h
n a m e s = ( [ 2 ] = a l i c e [ 0 ] = h a t t e r [ 1 ] = d u c h e s s )
# n a m e s = ( h a t t e r [ 5 ] = d u c h e s s a l i c e )
n a m e s [ 3 ] = t o m
n a m e s [ 4 ] = j e r r y
f o r i i n " $ { n a m e s [ @ ] } " ; d o
e c h o $ i
d o n e
$ { # a r r a y [ i ] }
I t r e t u r n t h e l e n g t h o f a n y e l e m e n t i n a n a r r a y . T o f i n d o u t h o w m a n y e l e m e n t i n a n a r r a y , y o u c a n u s e $ { # a r r a y [ @ ] } .
N o v e m b e r 2 2 t h T h u r s d a y ( AS N g 0ŒNASŒNåe 0(gÜfåe ÿ
I n t h e B T p r o t o c o l , t h e c o n n e c t i v e r e q u e s t c o n s i s t o f s t r i n g . T h o s e s t r i n g m u s t a b i d e f o l l o w i n g r u l e s .
T h e c o n n e c t i v i t y i s a s f o l l o w s :
* S t r i n g s a r e l e n g t h - p r e f i x e d b a s e t e n f o l l o w e d b y a c o l o n a n d t h e s t r i n g . F o r e x a m p l e 4 : s p a m c o r r e s p o n d s t o ' s p a m ' .
* I n t e g e r s a r e r e p r e s e n t e d b y a n ' i ' f o l l o w e d b y t h e n u m b e r i n b a s e 1 0 f o l l o w e d b y a n ' e ' . F o r e x a m p l e i 3 e c o r r e s p o n d s
t o 3 a n d i - 3 e c o r r e s p o n d s t o - 3 . I n t e g e r s h a v e n o s i z e l i m i t a t i o n . i - 0 e i s i n v a l i d . A l l e n c o d i n g s w i t h a l e a d i n g z e r o ,
s u c h a s i 0 3 e , a r e i n v a l i d , o t h e r t h a n i 0 e , w h i c h o f c o u r s e c o r r e s p o n d s t o 0 .
* L i s t s a r e e n c o d e d a s a n ' l ' f o l l o w e d b y t h e i r e l e m e n t s ( a l s o b e n c o d e d ) f o l l o w e d b y a n ' e ' . F o r e x a m p l e l 4 : s p a m 4 : e g g s e
c o r r e s p o n d s t o [ ' s p a m ' , ' e g g s ' ] .
* D i c t i o n a r i e s a r e e n c o d e d a s a ' d ' f o l l o w e d b y a l i s t o f a l t e r n a t i n g k e y s a n d t h e i r c o r r e s p o n d i n g v a l u e s f o l l o w e d b y
a n ' e ' . F o r e x a m p l e , d 3 : c o w 3 : m o o 4 : s p a m 4 : e g g s e c o r r e s p o n d s t o { ' c o w ' : ' m o o ' , ' s p a m ' : ' e g g s ' } a n d d 4 : s p a m l 1 : a 1 : b e e
c o r r e s p o n d s t o { ' s p a m ' : [ ' a ' , ' b ' ] } . K e y s m u s t b e s t r i n g s a n d a p p e a r i n s o r t e d o r d e r ( s o r t e d a s r a w s t r i n g s , n o t
a l p h a n u m e r i c s ) .