[英]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.