从以 root 身份运行的 shell 脚本中以 oracle 用户身份运行 oracle 脚本
我有一个以 root 身份运行的 shell 脚本。我希望脚本切换到 oracle 用户,运行 sqlplus 并运行一些 .sql
文件。 我正在尝试遵循:
su - oracle << -EOF1 2>&1
sqlplus $user/$password << -EOF2
@oracle.sql;
@quartz.sql;
EOF2
EOF1
首先我得到 stty: standard input: In合适的 ioctl for device
这是什么意思?
其次,有人可以向我解释在这种情况下重定向(应该)如何工作吗?
谢谢
I have a shell script that runs as root. I want the script to switch to oracle user, run sqlplus and run some .sql
files.
I am trying to followung :
su - oracle << -EOF1 2>&1
sqlplus $user/$password << -EOF2
@oracle.sql;
@quartz.sql;
EOF2
EOF1
first of all i get stty: standard input: Inappropriate ioctl for device
what does it mean ?
second, can someone explain to me how the redirect (should) work in this case ?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用:
如果您的脚本可能需要参数,则解决方案将会有所不同。
它检查当前运行的用户是否是root。如果是这样,它会以用户
oracle
身份重新执行脚本 ($0
)。但是顺便说一句,为什么脚本首先要以 root 身份运行?
Use:
If your script potentially takes arguments, the solution will differ.
What this does it checking whether the user running is currently root. If so, it re-executes the script (
$0
) as useroracle
instead.But BTW, why does the script run as root in the first place?
su - oracle -c "echo '从对偶中选择 1;
从对偶中选择 2;'| sqlpus / as sysdba "
如果包含 ' 使用以下内容
su - oracle -c "echo \"从对偶中选择 1;
选择 2 from Dual;\" | sqlpus / as sysdba "
su - oracle -c " echo 'select 1 from dual;
select 2 from dual;'| sqlpus / as sysdba "
if contain ' using following
su - oracle -c " echo \"select 1 from dual;
select 2 from dual;\" | sqlpus / as sysdba "