linux - Bash 脚本不能正常工作

标签 linux bash terminal

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

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

#!/bin/bash

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

su oracle
lsnrctl start
sqlplus sys as sysdba
startup

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

谢谢。

最佳答案

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

#!/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,您应该能够配置服务启动脚本。

关于linux - Bash 脚本不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46054159/

相关文章:

使用变量在 C 文件中调用 bash 命令

java - 从 Java 运行时隐藏 Putty 终端

linux - 移动或复制文件(如果该文件存在)?

linux - 在shell中获取程序执行时间

linux - ds3234的片选设置

python - macOS Sierra 安装 PyQt5 for python2.7

android - 在android上完成终端控制

由于空格,MySQL 在 bash 中发送错误

bash - 我想知道执行此命令时发生了什么?

linux - Bash 导出并在脚本中使用带引号和空格的变量