当前位置:  技术问答>linux和unix

shell脚本执行流程为什么不对?

    来源: 互联网  发布时间:2016-11-24

    本文导语:  初学shell,  这个脚本通过命令行输入1个参数(-mysql/-informix), 然后完成各种数据库的创建和初始化过程。 但是输入参数无论是mysql还是informix,只执行的是一个数据库。 流程肯定有问题。 请各位高手指点!! 以下...

初学shell, 
这个脚本通过命令行输入1个参数(-mysql/-informix),
然后完成各种数据库的创建和初始化过程。
但是输入参数无论是mysql还是informix,只执行的是一个数据库。
流程肯定有问题。
请各位高手指点!!

以下是我的代码逻辑:


#!/bin/sh
####read DBTYPE and DB parameters#####
CALLER=`basename $0`
DBTYPE=$1
# DB=$2

DB="securitydb"  
TABLESCRIPT="securitytables.sql"
STATICSCRIPT="loadstaticdata.sql"

echo "the first parameter is:" $1
echo "the second parameter is:" $2

usage()
{
  echo "in usage"
}

# #########use case statement############
error_infxdir()
{
echo "ERROR!!!!!! INFORMIXDIR environment variable INFORMIXDIR not set."
exit 1
}

error_infxserver()
{
echo "ERROR!!!!!! INFORMIXSERVER environment variable INFORMIXSERVER not set."
exit 1
}

error_createspace()
{
echo " ************************************************************************"
echo "****ERROR!!!!!! create %DB% dbspace failed,you should re-create dbspace.****"
echo "************************************************************************"
exit 1
}
success()
{
echo "********************************"
echo "***** The $DB database created success! ******"
echo "********************************" 
exit 0
}


############### informix handle begin #####################################################################
informixdb()
{
  echo "in informix:"
  echo "you must confirm informix service started and enviorment varable has been set first!"
  SECONDDRV=d:
  DBSPACE=securitydbspace
  DBSPACEFILE=securitydbs
  DBSPACESIZE=100000
  SHELLDIR=
  
  echo "INFORMIXDIR: " $INFORMIXDIR
  echo "INFORMIXSERVER: " $INFORMIXSERVER
 
  #  If exsit $DB database
  echo "Drop the exsit $DB database..."
  ###execute SQL statement use dbaccess??
  echo "DROP DATABASE $DB" | dbaccess -
   
  # echo "drop dbspace $DBSPACE..."
  ####execute onspaces directly
  onspaces -d $DBSPACE -y

  
  # create directory for dbspace
  mkdir $INFORMIXDIR/dbs
 # cd $INFORMIXDIR/dbs
 # pwd
  touch $INFORMIXDIR/dbs/$DBSPACEFILE
  chmod 660 $INFORMIXDIR/dbs/*
   
  ###linux/solaris dbspace location

onspaces -c -d $DBSPACE -p $INFORMIXDIR/dbs/$DBSPACEFILE -o 0 -s $DBSPACESIZE

 pwd

dbaccess - -  !
 
  cd ./informix/tablescript
  echo "current path:"
  pwd 
  if [ -f "$TABLESCRIPT" ]; then
echo "$TABLESCRIPT founded! delete file!"
rm -f $TABLESCRIPT
  fi
  
  echo "create the table script..."
  cat *.sql>$TABLESCRIPT
  
  echo "execute the script $TABLESCRIPT..."
  dbaccess $DB $TABLESCRIPT
  
  cd ./../../
  echo "current path:"  
  pwd

  echo "load static data..."
  cd ./informix/staticdata
  dbaccess $DB $STATICSCRIPT
  cd ./../../
  
  success   
}
############### informix handl"$1"="-informix"e end #####################################################################



############### mysql handle begin #####################################################################
mysqldb()
{
  echo "in mysql:"
  echo "you must confirm mysql service started and enviorment varable has been set first!"
# ## DB="securitydb"


  cd ./mysql/tablescript
  echo "current path:"
  pwd 
  if [ -f "$TABLESCRIPT" ]; then
echo "$TABLESCRIPT founded! delete file!"
rm $TABLESCRIPT
  fi
  
  echo "create the table script..."echo "Sorry, $YES_OR_NO not recognized. Enter yes or no."

  ## !!!solaris(liuguiqiu):error message!!error dropping database(can't ...)errno=17
  echo "DROP DATABASE IF EXISTS $DB;">>$TABLESCRIPT
  echo "CREATE DATABASE IF NOT EXISTS $DB;">>$TABLESCRIPT
  echo "USE $DB;">>$TABLESCRIPT
  ## !!!linux: message!!cat: securitytables.sql: input file is output file  
  cat *.sql>>$TABLESCRIPT
  
  echo "execute the script $TABLESCRIPT..."
  mysql -f -u root -p 

    
 
 

您可能感兴趣的文章:

  • shell脚本如何调用另外一个shell脚本的函数?
  • 急救!关于Shell脚本删除过期文件的问题,Shell脚本达人乱入
  • shell 脚本中命令别名在脚本外无法使用
  • 傻瓜问题,请问shell编程和shell脚本编程的关系
  • C语言调用shell脚本后,通过何种方法能获取脚本中变量的值
  • 想用shell脚本定时执行另一个脚本
  • 一个shell执行另一个带参数shell脚本????????????
  • 如何给shell脚本加密,脚本中有密码。最好是比较直接的,不要说让用 shc
  • Shell脚本调用Sql脚本并向其中传递变量
  • 请问,Shell中如何执行另外一个Shell脚本?
  • 如何传递参数给linux shell 脚本(当脚本从标准输入而不是从文件获取时)
  • nohup执行的shell脚本,全局变量不能传递到脚本中使用吗?
  • cd、zip等命令在shell提示符下能执行,在shell脚本中为什么不能执行呢?
  • shell脚本问题 关于父脚本和子脚本的问题
  • shell脚本错误输出
  • 请教shell脚本启动程序
  • 关于shell脚本的。
  • 关于arm linux下的别名配置脚本如何在进入用户时让shell执行的问题,如bashrc,profile,.bash_profile等脚本,寻求高手解答
  • 高分请教关于Shell脚本执行中断问题?
  • linux shell脚本
  • linux shell流程控制语句实例讲解(if、for、while、case语句实例)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • shell 编程 执行shell新建多个终端 并执行程序
  • 在B shell里怎麽执行曾经执行过的命令
  • 我在执行shell时,想在shell里直接向mysql数据库插入数据,我该如何写shell。
  • 如何在一台机器上的shell中执行另外一台机器上的shell
  • shell文件中执行命令和在提示符下执行有什么区别
  • shell 脚本 date 手动执行 和 放在init.d中自动执行的时间不一样
  • thttpd服务器,执行shell和c语言cgi成功,执行ssi指令不成功
  • 怎么写一个Shell来执行这样的功能,访问Oracle数据库,然后执行一个SQL脚本,生成一个文件。急!
  • 调用system函数执行更改MAC地址异常退出,上面的设置命令直接在shell终端中或在单独的shell脚本中能正常执行
  • 如何编写Shell,当SQL执行完毕后,继续调用Shell命令。
  • 很菜的问题——Linux(RedHat8)下的齿轮图标程序如何执行,是什么shell命令可以执行它?
  • 请问shell中执行一个命令后,如何不回显其执行结果。
  • 我用GCC生成的可执行文件无法直接在shell命令行下执行,这是为什么?可以用调试器调入执行。我用Red Hat7.0
  • 内核执行shell命令问题
  • 在shell命令行中敲一个可执行文件,起一个进程pc,这个进程属于shell进程
  • 请教shell脚本中, 如何保证一行执行成功之后,再执行下一行?
  • linux下shell执行命令后,为何停留在当前目录下?
  • 如何在C中既能读取到shell的执行结果,又能在必要时kill掉shell的进程
  • linux~shell编程~请教一个关于如何执行脚本的问题
  • SHELL脚本如何单击自动执行
  • Centos6下安装Shell下文件上传下载rz,sz命令
  • 不同类型的shell*(K SHELL , C SHELL) 用命令怎么切换?
  • shell文件中执行命令和在提示符下执行有什么区别 iis7站长之家
  • 菜鸟问问题:shell是什么呢?普通的ls、cp、pwd这些命令算不算shell呢?如何把自己写的文件变成shell呢?
  • linux bash shell命令:文本搜索工具grep中用于egrep和 grep -E的元字符扩展集
  • shell变量和子shell的问题请教
  • linux bash shell命令:文本搜索工具Grep命令选项及实例
  • 请问“当前shell”和“子shell”的区别?
  • linux bash shell命令:文本搜索工具grep正则表达式元字符集(基本集)
  • 怎么知道当前是B_SHELL 还是C_SHELL


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3