Bash:我的变量保存空格分隔值如何在db中创建一个表

时间:2013-09-25 13:17:58

标签: bash

我无法调试以下语法错误的原因: -

inventory.sh:第94行:意外令牌(' inventory.sh: line 94:附近的语法错误query_string =“INSERT INTO instance_detail(instance_id,region)values('$ {instance [n]}','$ i');” “

我的脚本中第94行附近的代码是

for k in "${instance[@]}";
  do         
     query_string="INSERT INTO instance_detail ( instance_id, region ) values ('${instance[n]}' , '$i');"  (LINE:94)
    `echo "$query_string" | mysql -D $MYDB -u$MYUSER`
     done
     n=$n+1

完成

sql中的相同插入查询运行正常。请建议!!!

2 个答案:

答案 0 :(得分:0)

query_string="INSERT INTO instance_detail ( instance_id, region ) values ('$instance[n]' , '$i');"  

OR

query_string="INSERT INTO instance_detail ( instance_id, region ) values ('${k}' , '$i');" 

OR

query_string="INSERT INTO instance_detail ( instance_id, region ) values (${k} , '$i');"   

OR

尝试在变量中分配值并尝试使用它

答案 1 :(得分:0)

如果instance数组包含instance_ids列表而您不关心SQL injection,则不需要for循环。

sql="INSERT INTO instance_detail (instance_id, region) values ('%s', '$i');\n"
printf "$sql" "${instance[@]}" | mysql -D $MYDB -u$MYUSER

printf命令将重复使用格式化模板,并根据需要多次使用格式化模板,以消耗它给出的所有参数。