Sida 1 av 1

Xdialog - hur får man över dialogens svar…? [LÖST]

Postat: 04 jan 2009, 16:55
av Johnny Rosenberg
Har googlat och fått samma svar svar på min fråga över allt. Det är bara ett litet problem: Det FUNGERAR INTE!

Här är ett exempel som jag hittade på en sida:

Kod: Markera allt

#!/bin/bash

Xdialog --title "INPUT BOX" --inputbox "What is your username?" 0 0 "Allan" > /tmp/inputbox.tmp.$$

retval=$?
input=`cat /tmp/inputbox.tmp.$$`
rm -f /tmp/inputbox.tmp.$$

case $retval in
   0)
      echo "Input string is '$input'";;
   1)
      echo "Cancel pressed.";;
   255)
      echo "Box closed.";;
esac
Följande händer när jag kör skriptet, låter den förvalda stå kvar och klickar OK (jag har namngett filen till Test):

Kod: Markera allt

$./Test
Allan
Input string is ''
$ 
Lite undersökningar visar att filen /tmp/inputbox.tmp.$$ verkar skapas, men den förblir tom. Texten Allan som trots allt kom ut, returneras av Xdialog på något sätt och har inget med någon echo-sats i skriptet att göra.

Har även sett en annan lösning på nätet, som inte heller fungerar:

Kod: Markera allt

#Lägg till följande rad i koden ovan:
input=`Xdialog --title "INPUT BOX" --inputbox "What is your username?" 0 0 Allan`
#Kommentera bort:
#Xdialog --title "INPUT BOX" --inputbox "What is your username?" 0 0 "Allan" > /tmp/inputbox.tmp.$$
#input=`cat /tmp/inputbox.tmp.$$`
Samma sak här som i förra exemplet.

Mer info om mitt system, som inte borde skilja sig så värst mycket från andras här på forumet:

Kod: Markera allt

$ bash --version
GNU bash, version 3.2.39(1)-release (i486-pc-linux-gnu)
Copyright (C) 2007 Free Software Foundation, Inc.
$ Xdialog --version
2.3.1
$
Funderar på om det kan vara så att detta fungerade i äldre versioner av Xdialog, då de flesta sidor om detta på nätet var några år gamla.

Re: Xdialog - hur får man över dialogens svar till en variabel?

Postat: 04 jan 2009, 17:01
av Lars
Xdialog skickar normalt all utdata till stderr, prova att använda flaggan --stdout.

Re: Xdialog - hur får man över dialogens svar till en variabel?

Postat: 04 jan 2009, 17:18
av Johnny Rosenberg
Lars skrev:Xdialog skickar normalt all utdata till stderr, prova att använda flaggan --stdout.
Tro mig eller ej, men jag tog just en titt i manualen (man xdialog) och såg plötsligt att --stderr och --stdout fanns med som val, så jag lade till --stdout och det fungerade!

Tänkte upplysa här i tråden om att jag hittat lösningen och fick då se att du redan hade svarat… Tack ändå för ett snabbt och korrekt svar!

Så här blev det alltså:

Kod: Markera allt

#!/bin/bash

input=`Xdialog --stdout --title "INPUT BOX" --inputbox "What is your username?" 0 0 Allan`

retval=$?

case $retval in
   0)
      echo "Input string is '$input'";;
   1)
      echo "Cancel pressed.";;
   255)
      echo "Box closed.";;
esac
Det hade säkert även fungerat med den gamla omdirigeringen till en fil, men jag tycker detta blev snyggare.

Körningen blev då följande, givetvis:

Kod: Markera allt

$ ./Test0
Input string is 'Allan'
$ 
Tackar!

Re: Xdialog - hur får man över dialogens svar till en variabel?

Postat: 05 jan 2009, 00:32
av Lars
Det är ofta så när man ställer frågor, när man väl har formulerat frågan så kommer man på lösningen själv :)