Íàñòðîéêà è ðàáîòà â Linux
adb5321d

Èçâëå÷åíèå çíà÷åíèé ïåðåìåííûõ


[khim@localhost tmp]$ VAR1=1234567890 [khim@localhost tmp]$ VAR2=0987654321 [khim@localhost tmp]$ echo "$VAR1 $VAR2 XXX${VAR1}XXX ZZZ${VAR2}ZZZ" 1234567890 0987654321 XXX1234567890XXX ZZZ0987654321ZZZ [khim@localhost khim]$

$ X èëè ${X} — ïðîñòî èçâëå÷ü çíà÷åíèå èç ïåðåìåííîé X (ôèãóðíûå ñêîáêè íåîáõîäèìû òîãäà, êîãäà ïîñëå èìåíè ïåðåìåííîé ñëåäóåò áóêâà èëè öèôðà).

[khim@localhost khim]$ ptr=VAR1 [khim@localhost khim]$ echo ${!ptr} 1234567890 [khim@localhost khim]$ ptr=VAR2 [khim@localhost khim]$ echo ${!ptr} 0987654321 [khim@localhost khim]$

${!X} — èçâëå÷ü çíà÷åíèå èç ïåðåìåííîé, èìÿ êîòîðîé õðàíèòñÿ â ïåðåìåííîé X. Âìåñòå ñ ìàññèâàìè ýòîãî äîñòàòî÷íî äëÿ ñîçäàíèÿ è îáðàáîòêè âåñüìà íåòðèâèàëüíûõ ñòðóêòóð äàííûõ.

[khim@localhost tmp]$ echo "${#VAR1}" 10 [khim@localhost tmp]$ echo "${VAR1:${#VAR1}-3}" 890 [khim@localhost tmp]$

${#X} — ïîëó÷èòü äëèíó ñòðîêè X; ýòó îïåðàöèþ óäîáíî êîìáèíèðîâàòü ñ èçâëå÷åíèåì ïîäñòðîêè.

[khim@localhost tmp]$ echo ${VAR4:?can not proceed without VAR4} ; echo Ok bash: VAR4: can not proceed without VAR4 [khim@localhost tmp]$

${X:?âûðàæåíèå} — èçâëå÷ü çíà÷åíèå ïåðåìåííîé, à åñëè îíà íå îïðåäåëåíà, îñòàíîâèòü âûïîëíåíèå ñêðèïòà.

[khim@localhost tmp]$ echo "${VAR1:-ABCDEF} ${VAR3:-ABCDEF}" 1234567890 ABCDEF [khim@localhost tmp]$ echo "${VAR1:-ABCDEF} ${VAR3:-FEDCBA}" 1234567890 FEDCBA [khim@localhost tmp]$

${X:-âûðàæåíèå} — óñëîâíîå èçâëå÷åíèå: åñëè ïåðåìåííàÿ îïðåäåëåíà (êàê VAR1), èñïîëüçóåòñÿ åå çíà÷åíèå, èíà÷å — çàäàííîå àëüòåðíàòèâíîå âûðàæåíèå (êàê â ñëó÷àå ñ VAR3).

[khim@localhost tmp]$ echo "${VAR1:=ABCDEF} ${VAR3:= ABCDEF}" 1234567890 ABCDEF [khim@localhost tmp]$ echo "${VAR1: =ABCDEF} ${VAR3:=FEDCBA}" 1234567890 ABCDEF [khim@localhost tmp]$

${X:=âûðàæåíèå} — òî æå, íî àëüòåðíàòèâíîå âûðàæåíèå ñòàíîâèòñÿ íà áóäóùåå çíà÷åíèåì ïåðåìåííîé.

[khim@localhost tmp]$ echo "${VAR1:5} ${VAR2:5:3}" 67890 543 [khim@localhost tmp]$

${X:N1[:N2]} — èçâëå÷ü èç ïåðåìåííîé X ïîäñòðîêó, íà÷èíàþùóþñÿ ñ N1-ãî ñèìâîëà (è çàêàí÷èâàþùóþñÿ N2-ì).

[khim@localhost tmp]$ echo "${VAR1#*[37]} ${VAR2#*[37]} ${VAR3#*[37]}" 4567890 654321 ABCDEF [khim@localhost tmp]$ echo "${VAR1##*[37]} ${VAR2##*[37]} ${VAR3##*[37]}" 890 21 ABCDEF [khim@localhost tmp]$ echo "${VAR1%[37]*} ${VAR2%[37]*} ${VAR3%[37]*}" 123456 0987654 ABCDEF [khim@localhost tmp]$ echo "${VAR1%%[37]*} ${VAR2%%[37]*} ${VAR3%%[37]*}" 12 098 ABCDEF [khim@localhost tmp]$


${X#øàáëîí}, ${X##øàáëîí}, S{X%øàáëîí}, S{X%%øàáëîí} — èçâëå÷ü ñòðîêó, óäàëèâ èç íåå ÷àñòü, ñîîòâåòñòâóþùóþ øàáëîíó. Øàáëîí ñòðîèòñÿ ïî òåì æå ïðàâèëàì, ÷òî è äëÿ èìåí ôàéëîâ, ò. å. ‘*[37]’ — ýòî ëþáàÿ ïîñëåäîâàòåëüíîñòü ñèìâîëîâ, à çàòåì ëèáî ‘3’, ëèáî ‘7’, à ‘[37]*’ — ýòî ‘3’ èëè ‘7’, à çàòåì ëþáàÿ ïîñëåäîâàòåëüíîñòü ñèìâîëîâ. Îïåðàöèè ‘#’ è ‘%’ óäàëÿþò ìèíèìàëüíóþ âîçìîæíóþ ïîäñòðîêó, ‘##’ è ‘%%’ — ìàêñèìàëüíóþ, ïðè÷åì ‘#’ è ‘##’ — ñ íà÷àëà ñòðîêè, à ‘%’ è ‘%%’ — ñ êîíöà.

[khim@localhost tmp]$ CDPATH=/bin [khim@localhost tmp]$ CDPATH=/newpath$ {CDPATH:+:$CDPATH} [khim@localhost tmp]$ echo ${CDPATH} /newpath:/bin [khim@localhost tmp]$ unset CDPATH [khim@localhost tmp]$ CDPATH=/newpath$ {CDPATH:+:$CDPATH} [khim@localhost tmp]$ echo ${CDPATH} /newpath [khim@localhost tmp]$

${X:+âûðàæåíèå} — îïåðàöèÿ, îáðàòíàÿ óñëîâíîìó èçâëå÷åíèþ. Ìîæåò ïîêàçàòüñÿ ìèñòè÷åñêîé, íî èñïîëüçóåòñÿ íå òàê óæ ðåäêî.

[khim@localhost tmp]$ echo "${VAR1/[123]/x} ${VAR2/ [123]/x} ${VAR3/[123]/x}" x234567890 0987654x21 ABCDEF [khim@localhost tmp]$ echo "${VAR1//[123]/x} ${VAR2// [123]/x} ${VAR3//[123]/x}" xxx4567890 0987654xxx ABCDEF [khim@localhost tmp]$

${X/øàáëîí/âûðàæåíèå}, ${X//øàáëîí/âûðàæåíèå} — èçâëå÷ü ñòðîêó, çàìåíèâ â íåé ÷àñòü, ñîîòâåòñòâóþùóþ øàáëîíó, çàäàííûì âûðàæåíèåì (ïîèñê ñ çàìåíîé). Îïåðàöèÿ ‘/’ âûïîëíÿåò çàìåíó îäíîêðàòíî, à ‘//’ ïîâòîðÿåò åå äî ïîáåäíîãî êîíöà.

Èñòî÷íèê - LinuxBegin.ru
http://linuxbegin.ru/

Àäðåñ ýòîé ñòàòüè:
http://linuxshop.ru/linuxbegin/article200.html


Ñîäåðæàíèå ðàçäåëà