Você precisa usar aspas para fazer com que o redirecionamento ocorra no lugar certo; conforme escrito, a saída do próprio xterm
(que provavelmente está vazio) está sendo redirecionada. Você também precisa especificar um shell, desde que xterm -e
caso contrário exec
o comando diretamente; redirecionamento requer o shell.
xterm -e sh -c 'dialog --inputbox "Enter your first name" 10 40 2>/tmp/input.'$$
x='cat /tmp/input.$$'
Você pode considerar o uso de algo como zenity
ou kdialog
em vez de dialog
, para evitar o xterm
extra.
(E em bash
, a segunda linha é melhor escrita como x=$(< /tmp/input.$$)
.)