问题:在shell脚本中执行“su – 用户名”后,脚本终止执行,并且切换到su 中指定用户名的交互式界面 
现象:我在root中执行一个脚本,但是其中的一些命令或脚本必须用oracle用户来执行。,
[root@HZ-ITF- cron.d]# vi /data/itf/app/oracle/sync/test.sh
#!/bin/bash
set -x
su - oracle
sqlplus /nolog <<EOF
conn hxy/hxy
create table test1 as select * from dba_tables;
exit
EOF

在root用户下执行sh /data/itf/app/oracle/sync/test.sh后,停止在oracle用户的交互界面不在往下执行 ,需要手动输入exit才能继续,但是在脚本中加入exit也不好使

分析: 
a、su – 之后就直接切换环境并且等待用户的交互式访问了,不在继续执行脚本中的命令 
b、su后的bash是一个子shell,脚本里写exit没有用,这些都要等su这个进程结束后才会执行。 
解决方案: su – 用户 -c 命令 
     或者 
     sudo -u 用户 命令 参考示例: 参考资料: Shell 中切换用户
 
然后脚本修改成下面的方式
#!/bin/bash
#set -x
su - oracle -c sqlplus /nolog <<EOF
conn hxy/hxy
create table test1 as select * from dba_tables;
exit
EOF

脚本顺利执行

或者改成:
#!/bin/bash
set -x
su - oracle <<!
sqlplus /nolog <<EOF
conn hxy/hxy
create table test1 as select * from dba_tables;
exit
EOF
!

也可以顺利执行

 

shell不能执行su 后的脚本的更多相关文章

  1. Ubuntu执行su后输入密码结果认证失败--解决办法:sudo passwd修改命令

  2. 在shell下执行命令的方法

    在shell下执行命令的方法 1. #!/bin/sh 语法:在shell.sh的开头写入 #!/bin/sh 一般的shell脚本就是这种用法.这种方法调用脚本开头的shell执行命令,子shell ...

  3. eas之dep的前置脚本和后置脚本

    dep的前置脚本和后置脚本,什么时候写,是这样解释的:    前置脚本是在方法前执行,后置脚本是在方法后执行    1.比如保存扩展,如果你要在保存前校验某个字段的值,你要在前置脚本中写,如果要保存后 ...

  4. 使用expect实现自动交互,shell命令行自动输入,脚本自动化,变量引用,expect spawn执行带引号命令,expect 变量为空,不生效,不能匹配通配符*,函数,数组

    背景 有需求,在允许命令或者脚本跳出交互行,需要进行内容输入,但需要人手动输入,不是很方便,此时可以通过expect来实现自动互动交互. expect是一个自动交互功能的工具,可以满足代替我们实际工作 ...

  5. Linux shell批量执行scp脚本工具

    转载: linux shell + expect:批量scp脚本工具             2011-09-13 15:51:06 分类: Python/Ruby 最近在准备一个部署的任务,其中有一 ...

  6. shell命令执行hive脚本(hive交互,hive的shell编程)

    Hive执行方式 Hive的hql命令执行方式有三种: 1.CLI 方式直接执行 2.作为字符串通过shell调用hive –e执行(-S开启静默,去掉"OK","Tim ...

  7. shell编程===执行shell脚本的四种方法

    使用vim创建一个shell文件,命名 hello.sh #!/bin/bash echo "hello shell !" 在linux中进行加载 chmod +x ./hello ...

  8. jenkin构建项目执行脚本后,脚本中启动的进程也随之关闭的解决办法

    问题描述: 之前用jenkins构建项目(maven项目)后都是通过ssh先将war文件推送到远程服务器,然后执行远程的脚本(更新项目,重启tomcat),一直没有出现问题,今天使用jenkins构建 ...

  9. Linux下通过shell进MySQL执行SQL或导入脚本

    这条命令表示通过用户名和密码执行shell然后在shell里面执行一个建表语句: USER="root" PASS="root" mysql -u $USER ...

随机推荐

  1. LNMP搭建(yum)

    CentOS官方镜像不提供nginx,http://nginx.orghttp://nginx.org/en/linux_packages.html#stable yum install nginx ...

  2. ssh reverse tunnel

    ssh反向通道的可用场景之一:从外网访问内网的主机.所必须的是你需要一个有ssh登录权限的公网主机. 步骤如下(将内网主机称作A,公网ssh主机地址为hostP ): 1.在内网A上执行 :local ...

  3. 前端模块化工具-webpack

    详解前端模块化工具-webpack webpack是一个module bundler,抛开博大精深的汉字问题,我们暂且管他叫'模块管理工具'.随着js能做的事情越来越多,浏览器.服务器,js似乎无处不 ...

  4. Java细粒度锁实现的3种方式

    最近在工作上碰见了一些高并发的场景需要加锁来保证业务逻辑的正确性,并且要求加锁后性能不能受到太大的影响.初步的想法是通过数据的时间戳,id等关键字来加锁,从而保证不同类型数据处理的并发性.而java自 ...

  5. oracle---plsql---示例laobai

    select * from scott.emp; --1 列出emp表中各部门的部门号,最高工资,最低工资 select deptno,max(sal),min(sal) from scott.emp ...

  6. 第二轮冲刺-Runner站立会议06

    今天:解决连接问题 明天:编写日历界面 困难:暂无

  7. Debugging D Program on Windows

    http://x64dbg.com/ http://www.ollydbg.de/version2.html

  8. strace追踪未开始或者来不及捕获pid的进程(译)

    我的个人博客网站最近被攻击了,被用来发送一些垃圾邮件.但是我不知道这个进程是怎么来的,用top查看发现一个不知道干什么的perl脚本,决定给用strace查看一下. strace可以追踪一个进程的系统 ...

  9. Hbase过滤器Filter的使用心得(爬坑经验)

    Hbase 的过滤器是个好东西.. 给这种非关系型数据库本来不能复杂查询的情况得到了很好的扩展..提供了很多的帮助.. 但是Filter的种类何其之多..让人眼花缭乱.. 譬如..分页类型的PageF ...

  10. rails 常用的知识点

    按惯例先上网址:  http://guides.ruby-china.org/    适合初学者很好的文章 ===========================知识点================ ...