Nowe posty

xx Dystrybucja pod HP Omen (7)
Dzisiaj o 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
lamp Problem z Linux Lite po instalacji (0)
2024-03-27, 19:50:30
xx Ile pingwinów? (1)
2024-03-27, 08:59:24
xx konfiguracja pale moon (0)
2024-03-24, 21:53:42
xx Plasma 6 w Neonie ssie trochę mniej ... (10)
2024-03-23, 02:38:11
xx problem z instalacja sterowników do karty sieciowej (3)
2024-03-18, 18:10:16
xx Plik abc.001 (1)
2024-03-17, 17:48:27
xx Zlecę dopracowanie programu w MatLab (0)
2024-03-13, 15:28:40
xx Linux Mint 21.3 XFCE brak dźwieku po paru minutach (karta muzyczna zintegrowana) (5)
2024-03-12, 23:07:01

Autor Wątek: : ${parametr=słowo} - jak to wyjaśnić?  (Przeczytany 2457 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.