Natknąłem sie na dziwny problem. Zastanawiam się czy to niejakis bug w bibliotece YAD.
Mianowice poniższy skrypt dla zmiennej $i zwraca ciągle 0. Próbowałem różnych kombinacji, ale ciagle to samo. Jakby YAD kasował wartość zmiennej.
#!/bin/bash
TEXT=`let i=0; for i in {1..5} ; do echo $i ; done` && yad --text "$TEXT"
#albo tak
yad --text "$(let i=0; for i in {1..5} ; do echo $i ; done)"
Chyba nie do końca się zrozumieliśmy. Podany przykład jest uproszczony i ma na celu pokazać, iż wartość zmiennej ( w naszym przykładzie zmienna i ) wykonywana w pętli, po zakończeniu działania YAD zostaje pusta, choć niepowinna.
Czyli po zakończeniu wyswietlania okna dialogu wartość zmiennej i jest pusta. A powinno być w tym przypadku 5.
Wszystko jest w porządku prócz małego szczegółu, gdy robisz pipe'a to tworzysz subshell, a zmienne stworzone w procesie potomnym nie są widoczne przez rodzica. Rozwiązanie:
Dzięki beluosus, teraz działa. Swoją drogą nie wiedziałem, iż jest taki operator jak > > . W manualu z basha nic o tym nie ma mowy. Toż to jakieś diabelskie sztuczki
Lenovo G580, Ubuntu 14.04, Detektyw Komputerowy dla Windows - OPEN SOURCE
Po pierwsze to nie operator > > tylko zwykłe przekierowanie połączone z operatorem >(). Działanie to nazywa się "process substitution", po drugie: jest o tym w manualu basha.