Ponieważ nazwy zmiennych mogą mieć podkreślenia w nim polecenie:
echo "$x_$y"
próbuje echo ${x_}
(co jest p automatycznie pusty w twoim przypadku), a następnie ${y}
. Powodem tego jest to, że rozszerzenie parametrów jest chciwą operacją - po nazwie $
będzie przyjmować tyle znaków prawnych, ile jest możliwe, aby utworzyć nazwę zmiennej.
Odpowiednia część bash
stanach podręcznika:
$
postać wprowadza dopełniania parametrów, podmian poleceń lub arytmetycznego.
Nazwa parametru lub symbol do rozwinięcia może być ujęta w nawiasy klamrowe, które są opcjonalne, ale służą do ochrony zmiennej, która ma zostać rozwinięta, od znaków bezpośrednio za nią, które mogą być interpretowane jako część nazwy.
Gdy stosuje się szelki, dopasowanie kończy usztywnienie jest pierwszym }
nie uciec przez backslashem lub w cudzysłowach, a nie w osadzonym arytmetycznego, zastąpienie polecenia lub ekspansji parametrów.
Stąd rozwiązanie ma na celu zapewnienie, że _
jest nie traktowane jako część pierwszej zmiennej, która może być wykonana z:
echo "${x}_${y}"
staram się robić wszystko moje bash takie zmienne, nawet autonomiczne, takie jak:
echo "${x}"
ponieważ jest bardziej wyraźny i zostałem ugryziony tak wiele razy mes w przeszłości :-)
Włącz kolorowanie składni w vim. Natychmiast dostrzeżesz proste błędy. – Dariusz