Forum Linux.pl

Programowanie => Bash, skrypty powłoki => Wątek zaczęty przez: djmentos w 2014-08-13, 16:22:59

Tytuł: Dlaczego ten dialog nie chce działać?
Wiadomość wysłana przez: djmentos w 2014-08-13, 16:22:59
Witam.

Usiłuję zrobić formularz w skrypcie, przy użyciu programu dialog. Użytkownik ma mieć możliwość wybrania w nim urządzenia, na którym będzie chciał operować.

Zmienna DEV_STRING wygląda tak:
Cytuj
sda "WDC WD5000AUDX-6 465,8G" sdb "WDC WD5000BPKT-7 465,8G"
Wywołanie, które robię tak:
Cytuj
DEVICE=`dialog --stdout --backtitle "TITLE" --title "TITLE" --menu "latest news " 20 50 30 $DEV_STRING`
Wybór użytkownika (sda lub sdb) chce zapisać do zmiennej DEVICE.

Kiedy wywołam to ręcznie z basha, to dostaję efekt widoczny po prawej stronie, kiedy ze skryptu - po lewej stronie (czyli źle).
(http://iv.pl/images/29212478415177416143.jpg)

Czy ktoś jest w stanie wytłumaczyć mi dlaczego tak się dzieje i podpowiedzieć jak to poprawić? Bo męczę się z tym już którąś godzinę.
Tytuł: Dlaczego ten dialog nie chce działać?
Wiadomość wysłana przez: ultr w 2014-08-13, 16:46:14
> Kiedy wywołam to ręcznie z basha, to dostaję efekt widoczny po prawej stronie

U mnie nigdy nie ma takiego efektu. Zawsze jest tak jak na screenie po lewej.

Użyj xargs:
DEV_STRING='sda "WDC WD5000AUDX-6 465,8G" sdb "WDC WD5000BPKT-7 465,8G"'
DEVICE=`echo "$DEV_STRING" | xargs dialog --stdout --backtitle "TITLE" --title "TITLE" --menu "latest news " 20 50 30`
Tytuł: Dlaczego ten dialog nie chce działać?
Wiadomość wysłana przez: djmentos w 2014-08-14, 10:56:07
Dzięki, to mi pomogło! Aczkolwiek nadal nie rozumiem czemu tak się dzieje.