Сценарий Bash для выхода из оболочки

Я пытаюсь написать сценарий bash, который выполняет несколько команд от имени разных пользователей для автоматизации процесса установки.

В какой-то момент у меня

su gpadmin
gpperfmon_install --enable --password password --port 5432
y  
gpstar
y 

su gpadmin запускается от имени пользователя root, и после его запуска сценарий останавливается до тех пор, пока я не выйду из gpadmin и не вернусь как пользователь root.

Как переключиться на нового пользователя, не останавливая скрипт?

Извините за мое невежество, я пытался гуглить, но ничего не нашел. Любая помощь будет принята с благодарностью.


person Mr S    schedule 19.01.2012    source источник


Ответы (1)


Вам нужно использовать параметр -c для su, чтобы он выполнил команду, а затем вышел. С параметрами, которые вы указали для su, он запустит оболочку gpadmin по умолчанию, которая будет блокироваться до тех пор, пока оболочка не выйдет. Судя по коду, который у вас уже есть, похоже, что gpperfmon_install — это интерактивное приложение, что является другой проблемой. Иногда вы можете использовать здесь документ, но в других случаях вам нужно будет использовать expect.

su gpadmin -c 'gpperfmon_install --enable --password password --port 5432 << EOF
y
gpstar
y
EOF'
person jordanm    schedule 19.01.2012