Bash скрипт, помогите с эхом и командами - PullRequest
0 голосов
/ 13 мая 2011

Я пытаюсь сделать так, чтобы этот скрипт читал ввод пользователей, а они выполняют команду с вводом пользователей. У меня работает эхо, но я не могу заставить остальных работать.

gnome-terminal -t 'Change User Password' \
    -x bash -c "echo 'What user needs their password change?' ; bash" \
    -x bash -c "read pswu ; bash" \
    -x bash -c "passwd $pswu ; bash"

Другой вопрос: я хотел бы знать, как щелкнуть правой кнопкой мыши файл и запустить скрипт с именем файла без пути или расширения.

Ответы [ 2 ]

2 голосов
/ 13 мая 2011

Попробуйте что-то вроде этого:

gnome-terminal -t 'Change User Password' -x bash -c "echo 'What user needs their
 password change?' ; read pswu ; passwd \$pswu "
1 голос
/ 13 мая 2011

Я думаю, что вы пытаетесь использовать неправильный инструмент для работы, в основном потому, что passwd не читает стандартный ввод, а из терминала (/dev/tty).

Вам, вероятно, нужно использовать expect или один из его различных рабочих уровней. Это разработано, чтобы управлять программами, такими как passwd, которые являются интерактивными и ожидают терминальный ввод (а не стандартный ввод).


Глядя на предлагаемую тройную команду, я не вижу, как третья -x bash собирается получать информацию от второй. Мне также не ясно, что делает bash -in-the-script. Конечно, вы должны написать сценарий, который выполняет всю работу, а затем вызвать терминал для запуска этого сценария. Мне кажется, что запускать три такие команды очень проблематично.

...