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 关键字 ,这个完全和你学的其他语言不一样。