Nowe posty

xx Problem ze sterownikami. (5)
2024-04-13, 21:25:16
xx Instalacja xfce4 (2)
2024-04-13, 16:20:17
xx Serie kompilacji bez instalacji dla “emerge” w Gentoo (2)
2024-04-08, 18:40:04
xx Plasma 6 w Neonie ssie trochę mniej ... (17)
2024-04-05, 10:03:46
xx Problem z Linux Lite po instalacji (3)
2024-04-03, 14:23:40
xx Jak właczyć num locka przy starcie systemu debian 12? (12)
2024-04-02, 17:43:54
xx Brak dźwieku w systemie. (5)
2024-04-02, 16:13:41
xx Dystrybucja pod HP Omen (7)
2024-03-29, 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
xx Ile pingwinów? (1)
2024-03-27, 08:59:24

Autor Wątek: : ${parametr=słowo} - jak to wyjaśnić?  (Przeczytany 2467 razy)

arctgx

  • Gość
: ${parametr=słowo} - jak to wyjaśnić?
« dnia: 2009-10-06, 19:28:44 »
Ostatnio tworzyłem skrypt z listą wyboru generowaną przez dialog. W przykładzie do podpatrzenia /usr/share/doc/dialog/examples/checklist (kopia np. tu[/url) natknąłem się na tytułową konstrukcję, której znaczenia nie potrafię wyjaśnić na podstawie podręcznika basha:
: ${parametr=słowo}
Nie rozumiem, czym różni się to od zwykłego przypisania i jaki jest sens użycia tej postaci zamiast niego.

Nie potrafię sobie tego wytłumaczyć ani na podstawie opisu polecenia dwukropka, ani znaleźć tej konstrukcji wśród opisów podobnych (:-, :=, :?, :+, ...) w polskim manualu lub oryginalnym z 7 lutego 2009.

jk33

  • Gość
: ${parametr=słowo} - jak to wyjaśnić?
« Odpowiedź #1 dnia: 2009-10-06, 19:38:29 »
Nie potrafię znaleźć opisu tej konstrukcji nigdzie. Ale działa to tak, że jeśli zmienna nie była wcześniej ustawiona, to ustawia ją na zadaną wartość. Jeśli była, to nic nie robi.

Jest jeszcze druga konstrukcja, która daje (chyba) ten sam efekt:
ZMIENNA=${ZMIENNA:-wartosc_domyslna}
pozdrawiam, Janek

arctgx

  • Gość
: ${parametr=słowo} - jak to wyjaśnić?
« Odpowiedź #2 dnia: 2009-10-06, 20:56:32 »
#!/bin/bash
X=0
: ${X=1}
: ${Y=1}
echo X=$X, Y=$Y
echo Nie ma Z, to zamiast tego:  ${Z:-2}
echo Z=$Z
echo Nadal nie ustawione Z, ale zaraz zostanie ustawione na ${Z:=2}
echo Z=$Z
Tak, nie zauważyłem tego, że podstawienie wartości domyślnej zachodzi tylko wtedy, gdy zmienna jest pusta lub nieustawiona. Tytułowa i podana przez Ciebie konstrukcja równoważne są w efekcie tej:
: ${ZMIENNA:=wartosc_domyslna}
(w działaniu chyba już nie: u Ciebie podstawienie (starej lub domyślnej) zachodzi zawsze).

___________________
P.S. Testuję przeglądarkę Arora na KHTML: pisząc ten post mogę regulować wielkość pola tekstowego, przeciągając narożnik.