Bash脚本不能正常工作

时间:2017-09-05 11:42:37

标签: linux bash terminal

我需要编写bash脚本来启动oracle DB 某些命令应该使用user-root运行,其中一些命令应该使用user-oracle

如何将这些代码作为bash脚本代码

#!/bin/bash

su root
password
rm /var/tmp/.oracle/*

su oracle
lsnrctl start
sqlplus sys as sysdba
startup

但是在我运行这段代码之后,它会问我root密码,并且在su命令之后不要运行其他命令。

感谢。

1 个答案:

答案 0 :(得分:0)

脚本中的每一行都是要执行的命令。如果一个命令读取输入,它通常不会从脚本文件中获取它,它从脚本的标准输入中获取它。如果您希望从脚本中读取它,则必须使用here-document:

#!/bin/bash

su root <<EOF
password
rm /var/tmp/.oracle/*

su oracle <<EOF1
lsnrctl start
sqlplus sys as sysdba
startup
EOF1
EOF

但是,我不确定这适用于su。它可能无法从标准输入读取密码,但强制它来自终端。您可能应该使用sudo,您可以将其配置为不需要某些用户和脚本的密码。

或者如果您使用systemd,您应该能够配置服务启动脚本。