shell脚本给我带来的一些坑

1、我经常用shell脚本批量去建一些表  ,count   ....while    do [sql stat]   done  等等 ,在create table select *  from xxxx where 1=2的时候 ,你是否被id没有自动去建立primary key  auto_increment   的主键索引给枪毙呢,反正我被坑了。

2、你是否写过函数function(){...}   在函数中接收过参数吧  ,你是不是这么写过  $data="xxx   xxx    xxx"  ,而结果 ,你想你的函数接收一个参数 ,而你却这么传了参数  fun   $data  ^_^  ,哈哈,实际上效果是这样的,fun  xxx xxx xxx  ,呵呵,中招了吧  ,所以,你应该这么写 fun "$data"   

3、for file in `ls |grep ^this`   ,一定用过吧  ,你是否在这个命令之前 cd到一个目录中去  ,那么,你echo  $file  的时候 ,它会将目录的信息带上去么 ,你敢确定你的说法吗?反正我被坑了,这是我的代码。

function load_game_data2_dbs(){
file=$1
echo_log "$file  正在导入数据库中"
。。。。。

for  file in `ls |grep ^attemp`
  do
  echo_log "已经进入了 最后的循环,准备去导包"
  #将这个文件分发到4个DB上的原始数据上去,代auto那个表
  load_game_data2_dbs "$Directory/$file"
  echo_log "已经将数据 $Directory/$file 导入到4台DB ,准备设置文件完成初始状态\n"
  #将4台DB上的包导完标志位置位为初始状态
  。。。。。。
  done

load_game_data2_dbs 中,我打印了 
  $Directory/$file  。接着 echo_log也打印了 
  $Directory/$file  猜猜 ,两个输出的是什么?反正我被坑了,后来知道怎么被坑了,原来在load_game_data2_dbs函数中,你需要对file变量加loacl 关键字  ,这个完全和你学的其他语言不一样。
原文地址:https://www.cnblogs.com/dyllove98/p/3125064.html