Drugi przypadek dzieli się na trzy części:
[echo] [$myvar][#world]
1 2 3
Część 1 jest komenda, część 2 jest parametrem, a część 3 to literał łańcuchowy. Parametr zatrzymuje się na r
od #
nie może być częścią nazwy zmiennej (# 's nie są dozwolone w nazwach zmiennych.)
Parser powłoka rozpoznaje początek nazwy parametru przez $
i Koniec przez dowolny znak, który nie może być częścią nazwy zmiennej. Zwykle tylko litery, cyfry i podkreślenia są dozwolone w nazwie zmiennej, wszystko inne powie powłoce, że skończysz, określając nazwę zmiennej.
Wszystko to będzie wydrukować $myvar
zakończony sześcioma dosłownych znaków:
echo $myvar world
echo $myvar?world
echo $myvar#world
Jeśli chcesz umieścić znaki, które mogą być częścią parametru bezpośrednio po parametrze można zawierać nawiasy wokół nazwy parametru coś takiego:
myvar=hello
echo ${myvar}world
który wypisuje:
helloworld
Twój trzeci przypadek to substring removal, z wyjątkiem braku dopasowania. Aby zrobić coś interesującego, spróbuj zamiast tego:
myvar="Hello World"
echo ${myvar#Hello }
, która właśnie drukuje World
.
oops, nie wiedziałem tego. Przyjąłem niektóre teraz, klikając znacznik wyboru. – sunny8107