Bash 脚本 su 退出 shell

Mr *_*r S 1 bash shell su

我正在尝试编写一个 bash 脚本,该脚本以不同的用户身份执行多个命令来自动化安装过程。

在某一时刻我有

su gpadmin
gpperfmon_install --enable --password password --port 5432
y  
gpstar
y 
Run Code Online (Sandbox Code Playgroud)

su gpadmin 以 root 身份运行,一旦运行,脚本就会停止,直到我退出 gpadmin 并以 root 身份返回。

如何在不停止脚本的情况下切换到新用户?

抱歉我的无知,我尝试用谷歌搜索但没有发现任何有用的东西。任何帮助将不胜感激。

jor*_*anm 6

您需要使用 su 的 -c 选项才能运行命令然后退出。使用您为 su 提供的选项,它将运行 gpadmin 的默认 shell,该 shell 将阻塞,直到 shell 退出。从您已有的代码来看,gpperfmon_install 似乎是一个交互式应用程序,这是另一个问题。有时您可以使用此处文档,但在其他情况下您需要使用expect.

su gpadmin -c 'gpperfmon_install --enable --password password --port 5432 << EOF
y
gpstar
y
EOF'
Run Code Online (Sandbox Code Playgroud)