Чтобы как-то взаимодействовать с пользователем с помощью оболочки в Linux, вы можете использовать dialog .
мой вопрос о dialog --inputbox где вы позволяете пользователю вводить строку в качестве ответа на вопрос, затем вы можете перенаправить результат в /tmp/input.$$ и сохранить его следующим образом:
dialog --inputbox "Enter you first name:"10 40 2>/tmp/input.$$

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

До сих пор это замечательно!, Но что, если я напишу скрипт, поэтому мне нужно назначить «диалог ....» для xterm который откроется, когда пользователь нажмет на файл скрипта.
Основная проблема, если я сделал назначение, я ничего не найду в /tmp/input.$$
Код сейчас:

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

тогда как я могу сохранить значение, введенное пользователем в переменную, чтобы использовать его позже?
Любая идея ? даже если с другим методом!
Заранее спасибо

1 ответ1

1

Вы должны использовать цитирование, чтобы перенаправление происходило в нужном месте; как написано, вывод самого xterm (который, вероятно, пуст) перенаправляется. Вам также необходимо указать оболочку, так как иначе xterm -e exec команду напрямую; перенаправление требует оболочки.

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

Вы можете захотеть использовать что-то вроде zenity или kdialog вместо dialog , чтобы избежать лишнего xterm .

(А в bash вторая строка лучше записывается как x=$(< /tmp/input.$$) .)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .