Chinaunix

标题: EOF的问题 [打印本页]

作者: 零度冰水    时间: 2016-11-28 17:53
标题: EOF的问题
代码如下
  1. #!/usr/bin/env bash
  2. set -e
  3.     source /assets/colorecho
  4.     source ~/.bashrc
  5.       
  6.     alert_log="$ORACLE_BASE/diag/rdbms/orcl/$ORACLE_SID/trace/alert_$ORACLE_SID.log"
  7.     listener_log="$ORACLE_BASE/diag/tnslsnr/$HOSTNAME/listener/trace/listener.log"
  8.     pfile=$ORACLE_HOME/dbs/init$ORACLE_SID.ora
  9.       
  10.     # monitor $logfile  
  11.     monitor() {  
  12.         tail -F -n 0 $1 | while read line; do echo -e "$2: $line"; done
  13.     }
  14.       
  15.       
  16.     trap_db() {
  17.         trap "echo_red 'Caught SIGTERM signal, shutting down...'; stop" SIGTERM;
  18.         trap "echo_red 'Caught SIGINT signal, shutting down...'; stop" SIGINT;
  19.     }
  20.       
  21.     start_db() {
  22.         echo_yellow "Starting listener..."
  23.         monitor $listener_log listener &
  24.         lsnrctl start | while read line; do echo -e "lsnrctl: $line"; done
  25.         MON_LSNR_PID=$!
  26.         echo_yellow "Starting database..."
  27.         trap_db
  28.         monitor $alert_log alertlog &
  29.         MON_ALERT_PID=$!
  30. sqlplus / as sysdba <<-EOF
  31.             pro Starting with pfile='$pfile' ...
  32.             startup;
  33.             alter system register;
  34.             exit 0
  35. EOF
  36.         while read line; do echo -e "sqlplus: $line"; done
  37.         wait $MON_ALERT_PID
  38.     }
  39.       
  40.     create_db() {
  41.         echo_yellow "Database does not exist. Creating database..."
  42.         date "+%F %T"
  43.         monitor $alert_log alertlog &
  44.         MON_ALERT_PID=$!
  45.         monitor $listener_log listener &
  46.         #lsnrctl start | while read line; do echo -e "lsnrctl: $line"; done  
  47.         #MON_LSNR_PID=$!  
  48.         echo "START DBCA"
  49.         dbca -silent -createDatabase -responseFile /assets/dbca.rsp
  50.         echo_green "Database created."
  51.         date "+%F %T"
  52.         change_dpdump_dir
  53.             touch $pfile
  54.         trap_db
  55.             kill $MON_ALERT_PID
  56.         #wait $MON_ALERT_PID
  57.     }
  58.       
  59.     stop() {
  60.         trap '' SIGINT SIGTERM
  61.         shu_immediate
  62.         echo_yellow "Shutting down listener..."
  63.         lsnrctl stop | while read line; do echo -e "lsnrctl: $line"; done
  64.         kill $MON_ALERT_PID $MON_LSNR_PID
  65.         exit 0
  66.     }
  67.       
  68.     shu_immediate() {
  69.         ps -ef | grep ora_pmon | grep -v grep > /dev/null && \
  70.         echo_yellow "Shutting down the database..." && \
  71.         sqlplus / as sysdba <<-EOF
  72.             set echo on
  73.             shutdown immediate;
  74.             exit 0
  75. EOF
  76.         while read line; do echo -e "sqlplus: $line"; done
  77.     }
  78.       
  79.     change_dpdump_dir () {
  80.         echo_green "Changind dpdump dir to /opt/oracle/dpdump"
  81.         sqlplus / as sysdba <<-EOF
  82.             create or replace directory data_pump_dir as '/opt/oracle/dpdump';
  83.             commit;
  84.             exit 0
  85. EOF
  86.         while read line; do echo -e "sqlplus: $line"; done
  87.     }
  88.       
  89.     chmod 777 /u01/oracle/dpdump
  90.       
  91.     echo "Checking shared memory..."
  92.     df -h | grep "Mounted on" && df -h | egrep --color "^.*/dev/shm" || echo "Shared memory is not mounted."
  93.     if [ ! -f $pfile ]; then
  94.       create_db;
  95.     fi
  96.     start_db
复制代码
运行的时候老是报
warning: here-document at line 71 delimited by end-of-file (wanted `EOF')
line 97: syntax error: unexpected end of file 错误,不知道哪里的问题


作者: songyc_2015    时间: 2016-11-28 23:43
回复 1# 零度冰水
        sqlplus / as sysdba <<-EOF...
...
...
EOF
结束的EOF多了空格


作者: 零度冰水    时间: 2016-11-29 09:01
回复 2# songyc_2015

谢谢,一个空格调了好久





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2