Nowe posty

xx Debian 9.13 i dovecot 2.2.27 problem (0)
Dzisiaj o 15:36:56
xx Skrypty linux Prosze o pomoc (7)
Dzisiaj o 11:17:55
xx Strona o testach penetracyjnych, hackingu (23)
2022-01-22, 22:28:27
xx Ocena odpowiedzi - włączenie funkcji forum (1)
2022-01-18, 17:00:43
xx Instalacja Linux pop!os na laptopie bez systemu (10)
2022-01-13, 19:00:51
xx Stary Asus x71sl , nie startuje żaden linux (8)
2022-01-11, 19:00:52
xx HDMI - problem w poprawnym działaniu (0)
2022-01-11, 13:09:19
xx Search redirecting (4)
2022-01-08, 12:12:02
xx Jak to wersja (24)
2022-01-07, 00:22:09
xx Zadanie (1)
2022-01-06, 09:34:34

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