Передача текста в скрипт bash - PullRequest
0 голосов
/ 12 января 2019

Когда мой пользователь входит в систему, мне нужно ввести следующее вручную, поэтому я пытаюсь создать сценарий, чтобы сделать это для меня

. oraenv

Приложение запрашивает ввод, поэтому я ввожу "M40" (каждый раз один и тот же текст)

Затем мне нужно запустить приложение linux, чтобы запустить свою рабочую среду.

Итак, как мне автоматически ввести M40, а затем клавишу ввода

Ответы [ 2 ]

0 голосов
/ 12 января 2019

Сценарий oraenv запрашивает значение для ORACLE_SID, поэтому вы можете установить его самостоятельно в .profile или в другом месте.

export ORACLE_SID=M40

У него также есть флаг, который можно установить, чтобы сделать его неинтерактивным:

ORAENV_ASK=NO

Что касается конкретно вводимого по конвейеру ввода, сценарий должен быть написан для его обработки, например, с использованием read или таких команд, как cat без имени файла. См. Трубный ввод в скрипт для получения более подробной информации. Однако это не то, как кодируется стандарт oraenv (при условии, что вы используете сценарий).

0 голосов
/ 12 января 2019

Я не уверен, поможет ли вам какая-либо из этих операций.

echo M40 | . oraenv

Этот использует echo трубу.

printf M40 | . oraenv

Этот использует printf для трубы. Использование echo отличается от использования printf в некоторых ситуациях, однако я не знаю их реальной разницы.

. oraenv <<< M40

Этот использует Here String (извините за использование ABS в качестве эталона), сокращенную форму Heredoc .

. oraenv < <(echo M40)

Этот использует Замена процесса , вы можете увидеть https://superuser.com/questions/1059781/what-exactly-is-in-bash-and-in-zsh для разницы между этим и вышеупомянутым.

expect -c "spawn . oraenv; expect \"nput\"; send \"M40\r\n\"; interact"

Этот использует expect для автоматического ввода, он имеет большую расширяемость во многих ситуациях. Обратите внимание, чтобы изменить expect \"nput\" часть с вашей реальной ситуацией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...