Der zweite Fall teilt sich in drei Teile:
[echo] [$myvar][#world]
1 2 3
Teil 1 wird der Befehl, 2 Teil ein Parameter ist, und ein Teil 3 ist ein String-Literal. Der Parameter stoppt auf r
seit den #
kann nicht Teil des Variablennamen sein (# 's sind nicht in Variablennamen erlaubt.)
Der Shell-Parser den Anfang eines Parameternamen durch die $
erkennen, und die endet mit einem beliebigen Zeichen, das nicht Teil des Variablennamens sein kann. Normalerweise sind nur Buchstaben, Zahlen und Unterstriche in einem Variablennamen zulässig, alles andere teilt der Shell mit, dass Sie den Namen der Variablen eingegeben haben.
Alle diese werden $myvar
von sechs wörtlichen Zeichen gefolgt ausdrucken:
echo $myvar world
echo $myvar?world
echo $myvar#world
Wenn Sie Zeichen setzen wollen, die nach dem Parameter direkt Teil eines Parameters sein können, können Sie Klammern um den Parameternamen enthalten , wie folgt aus:
myvar=hello
echo ${myvar}world
die ausdruckt:
helloworld
Ihr dritter Fall ist substring removal, außer ohne Übereinstimmung. Um es etwas Interessantes zu tun, versuchen Sie stattdessen:
myvar="Hello World"
echo ${myvar#Hello }
die gerade World
druckt.
oops, wusste das nicht. Habe jetzt einige akzeptiert, indem ich auf das Häkchen geklickt habe. – sunny8107