我试图整理一个脚本来批量更新一堆数据库表。我在文件中有一个列表(但我也可以从stdin中获取它),并且我试图构建ALTER TABLE
命令。我有以下
while read table; do echo "ALTER TABLE $table ENGINE=Aria"; done < tables
然而输出类似这样的东西
ENGINE=Ariamydatabase.mytableone
ENGINE=Ariamydatabase.mytabletwo
ENGINE=Ariamydatabase.mytablethree
而不是
ALTER TABLE mydatabase.mytableone ENGINE=Aria;
...
像我预期的那样。我究竟做错了什么?最后,我将echo
更改为mysql -uroot -ppassword -e"ALTER TABLE $table ENGINE=Aria;"
。
答案 0 :(得分:0)
文件tables
具有DOS \r\n
行结尾。这会导致$table
以\r
回车结束,打印时将光标移回行的开头。
答案 1 :(得分:-2)
Cat命令将处理您的新线路操作员。
试试这段代码:
$ cat tables | while read table; do echo "ALTER TABLE $table ENGINE=Aria"; done