shell script “<< EOF”我的用途和遇到的问题

我的理解:<< EOF … EOF主要用在向外界命令发送批量内部执行语句,比如mysql,比如Oracle

mysql:

#!/bin/sh
mysql -uroot -p123456 <<EOF
  use test;
  select * from testaa while a=10000; 
  exit
EOF

Oracle

#!/bin/bash
#Filename:do.sh
su - oracle -c "
export ORACLE_SID=orcl
sqlplus /nolog << EOF
  connect / as sysdba
  startup;
  exit;
EOF"
sleep 5
su - oracle -c
lsnrctl start

比如我这样做是向mysql发送了一次执行动作,节省xxx

$MYSQL db-monitor -u root << EOF
  delete from process;
  update application set run_status=0, ins_count=0;
  select concat(application_name,':',server_port) comp from tbl_application order by id;
EOF

但是,这里面执行语句的输出能否在shell中读到我不知道!!!。。。

一个注意点:

结尾的EOF在单独行写,且前面不能有空格,好像后面也不能有空格。习惯于左右缩进的,把 << EOF写在函数里面或者循环里面的,要注意了。

在这里插入图片描述
是否组合命令前后比较

while ["一级循环"]; do
  while ["2级循环"]; do
# 分别执行SQL
#    sql1="INSERT INTO process ( pid, application_name,server_port,listen_port, xmx) VALUES "
#    sql2="(${pid},'${app_name}',${server_port}, '${net_port:1}', '${Xmx}')"
#    
#    $MYSQL -uroot  doorbell-monitor -e "${sql1} ${sql2}"
#
#    $MYSQL -uroot  db-monitor -e "update tbl_application set run_status=1, ins_count=ins_count+1 where application_name='$app_name' and server_port='$server_port'"
#    

# 组合执行
    $MYSQL db-monitor -u root << EOF
      INSERT INTO process ( pid, application_name,server_port,listen_port, xmx)
      VALUES (${pid},'${app_name}',${server_port}, '${net_port:1}', '${Xmx}');

      update tbl_application set run_status=1, ins_count=ins_count+1 where application_name='$app_name' and server_port='$server_port';
#看这里!看这里!   
EOF
    log "29"
  done
done
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值