代码之家  ›  专栏  ›  技术社区  ›  Kristof Plennings

Shell脚本:执行2个命令并保持第一个运行

  •  0
  • Kristof Plennings  · 技术社区  · 6 年前

    我正在尝试为docker图像编写shell脚本,其中:

    1. mssqql服务器已启动
    2. 发生数据库设置

    但是,使用当前脚本,数据导入完成后,sql server实例就会停止。有人能指出我做错了什么吗?

    #!/bin/bash
    database=myDB
    wait_time=30s
    password=myPw
    
    exec /opt/mssql/bin/sqlservr &
    echo importing data will start in $wait_time...
    sleep $wait_time
    echo importing data...
    
    /opt/mssql-tools/bin/sqlcmd -S 0.0.0.0 -U sa -P $password -i ./init.sql
    
    for entry in "table/*.sql"
    do
      echo executing $entry
      /opt/mssql-tools/bin/sqlcmd -S 0.0.0.0 -U sa -P $password -i $entry
    done
    
    for entry in "data/*.csv"
    do
      shortname=$(echo $entry | cut -f 1 -d '.' | cut -f 2 -d '/')
      tableName=$database.dbo.$shortname
      echo importing $tableName from $entry
      /opt/mssql-tools/bin/bcp $tableName in $entry -c -t',' -F 2 -S 0.0.0.0 -U sa -P $password
    done
    
    2 回复  |  直到 6 年前
        1
  •  0
  •   Abhijit Pritam Dutta    6 年前

    我在你的shell脚本中没有看到任何明显的错误。我只是向您提供以下建议:-

    1. 尝试从脚本的当前shell运行服务器 exec

       /opt/mssql/bin/sqlservr &
      
    2. 在两个循环语句中加入一些echo来检查那里发生了什么。

    希望这会有所帮助。

        2
  •  0
  •   Kristof Plennings    6 年前

    似乎我需要补充 set -m 解决此问题。