ShellScript: dialog inputbox

0

De alguma forma, para interagir com o usuário usando o shell no Linux, você pode usar dialog .
minha pergunta sobre dialog --inputbox onde você permite que o usuário insira uma string como uma resposta a uma pergunta, então você pode redirecionar o resultado para /tmp/input.$$ e você pode salvá-lo da seguinte forma:
dialog --inputbox "Enter you first name:"10 40 2>/tmp/input.$$

x='cat /tmp/input.$$'

Até agora isso é ótimo !, mas e se eu escrever um script, então tenho que atribuir "dialog ...." a xterm , que será aberto quando o usuário clicar em um arquivo de script.
O principal problema se eu fiz a atribuição não encontrarei nada em /tmp/input.$$
O código agora:

xterm -e dialog --inputbox "Enter your first name" 10 40 2>/tmp/input.$$
x='cat /tmp/input.$$'

em seguida, como posso salvar o valor inserido pelo usuário em uma variável para usá-lo mais tarde?
Qualquer ideia ? mesmo com método diferente!
Obrigado antecipadamente

    
por wisdom 20.04.2012 / 23:29

1 resposta

1

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.$$) .)

    
por 20.04.2012 / 23:43