我有一个以root身份运行的shell脚本。我希望脚本切换到oracle用户,运行sqlplus并运行一些.sql
文件。
我想跟进:
su - oracle << -EOF1 2>&1
sqlplus $user/$password << -EOF2
@oracle.sql;
@quartz.sql;
EOF2
EOF1
首先,我得到stty: standard input: Inappropriate ioctl for device
这是什么意思?
第二,有人可以向我解释在这种情况下重定向(应该)是如何工作的吗?
由于
答案 0 :(得分:2)
使用:
if [ "$(id -un)" -eq "root" ]; then
exec su - oracle -c $0
fi
sqlplus <<EOF
blablabla
EOF
如果您的脚本可能接受参数,则解决方案会有所不同。
这是检查运行的用户当前是否为root的原因。如果是,则以用户$0
重新执行脚本(oracle
)。
但BTW,为什么脚本首先以root身份运行?
答案 1 :(得分:0)
su - oracle -c“echo”从双重中选择1; 从双重中选择2;'| sqlpus / as sysdba“
如果包含'使用以下内容 su - oracle -c“echo \”从双重中选择1; 从dual中选择2; \“| sqlpus / as sysdba”