起初,我是一个非常新的shell脚本,所以请不要拍我! :)
我尝试做什么。我有一个多站点WordPress安装,我喜欢编写一个脚本,能够通过在shell脚本中传递站点id作为参数从架构中导出特定的表,或者通过设置一个选项来导出所有{{1模式的表。
为了识别哪个表集是针对哪个站点,WordPress会更改每个表集的前缀。所以在示例中执行以下操作:
selected
此外,WordPress将博客ID存储在名为wp_options
wp_1_options
...
wp_x_options
因此,从我的shell脚本中运行以下代码:
wp_blogs
我得到以下结果
mysql -uUSER -pPASS -e 'SELECT `blog_id` AS `ID`, `path` AS `Slug` FROM `wp`.`wp_blogs`'
那么,现在实际的问题是,我如何逐行解析MySql结果,以获取+----+---------------------------+
| ID | Slug |
+----+---------------------------+
| 1 | / |
| 2 | /site-2-slug/ |
| 4 | /site-4-slug/ |
| 5 | /site-5-slug/ |
| 6 | /site-6-slug/ |
| 7 | /site-7-slug/ |
| 8 | /site-8-slug/ |
| 9 | /site-9-slug/ |
| 10 | /site-10-slug/ |
+----+---------------------------+
和ID
信息?
附注1 :整个脚本已经生成并以某种方式手动运行。我现在需要这些信息,以便自动化甚至更远的导出脚本。
*旁注2 :MySql通过Slug
ssh执行,如下所示:*
Vagrant
答案 0 :(得分:2)
您可以使用INTO将结果保存到文件中,如下所示:
SELECT blog_id, path FROM wp.wp_blogs
INTO OUTFILE '/tmp/blogs.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
然后你可以使用/ wak / simple while循环逐行处理它。假设您要搜索网站并将其替换为mysite,您可以执行以下操作:
awk -F',' '{print "Id: " $1 ", path: "$2}' /tmp/blogs.csv ##or simply cat the file.