簡體   English   中英

如何從單獨的輸入行(從文件或標准輸入)格式化bash命令行

[英]How to format bash command lines from separate input lines (from file or stdin)

我正在嘗試將一個腳本放在一起以批量更新一堆數據庫表。 我在文件中有一個列表(但是我也可以從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;"

文件tables具有DOS \\r\\n行尾。 這導致$table\\r回車結束,在打印時將光標移回該行的開頭。

您需要tables轉換為UNIX \\n行尾

Cat命令將與您的換行符一起使用。

試試這個代碼:

$ cat tables | while read table; do echo "ALTER TABLE $table ENGINE=Aria"; done

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM