首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在bash脚本中只在for循环中执行一次的mysql连接方式?

问在bash脚本中只在for循环中执行一次的mysql连接方式?
EN

Stack Overflow用户
提问于 2015-01-21 07:45:27
回答 2查看 430关注 0票数 1

我有一个脚本,它将执行Insert查询n次--因为我使用了for循环,但问题是连接到远程mysql的命令也执行了n次。这是解决我的问题的更好想法的脚本。

代码语言:javascript
复制
#!/bin/bash -X
#fields:  id|alias|booking_time|contact_no|deleted|grace|number_in_queue|pax|seated_time|status|walk_in_time|queue_id|user_id 

echo "Bash version ${BASH_VERSION}..."

for i in {1..5..1}
do
        _alias="Name$i"
        _contact_no=$(cat /dev/urandom | tr -dc '1-9' | fold -w 10 | head -n 1)
        _deleted="FALSE"
        _number_in_queue=$i
        _pax=$(( $RANDOM % 10 + 20 ))
        _status="waiting"
        _queue_id=424
        _user_id=550

        mysql -u root -p restbucks << EOF  #Want this to execute only One time
        INSERT INTO queue_item  VALUES ('','$_alias',now(),'$_contact_no','$_deleted',NULL,'$_number_in_queue','$_pax',now(),'$_status',now(),'$_queue_id','$_user_id');

EOF

done

每次我尝试运行脚本时,它都会问我密码。我想要的是只有连接一次。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-21 07:53:45

您可以在for循环之前移动mysql连接。

代码语言:javascript
复制
mysql -u root -p restbucks << EOF  #this execute only One time
for i in {1..5..1}
do
.....
done
EOF

此外,建议您可以将查询写入文件,然后使用单个连接执行该文件。

您可以参考bulk-mysql-query

票数 1
EN

Stack Overflow用户

发布于 2015-01-21 07:51:45

这是因为它被放置在for循环中。每当控件传递给循环时,它就会被执行。一旦连接完毕,就不需要连接到服务器。尝试将语句放在FOR语句之前。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28061973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档