首先,我是一个非常新的shell脚本,所以请不要射击我!)
我想做的事。我有一个多站点WordPress安装,我喜欢编写一个脚本,它可以通过在shell脚本中传递站点id作为参数,或者通过设置一个选项来导出模式的所有selected表,从而从模式导出特定的表。
为了识别哪个表集是哪个站点的表集,WordPress更改每个表集的前缀。因此,在示例中,如下所示:
wp_options
wp_1_options
...
wp_x_options此外,WordPress将博客id存储在一个名为wp_blogs的特殊表中。
因此,在我的shell脚本中,我运行了以下代码:
mysql -uUSER -pPASS -e 'SELECT `blog_id` AS `ID`, `path` AS `Slug` FROM `wp`.`wp_blogs`'我得到了以下结果
+----+---------------------------+
| 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/ |
+----+---------------------------+因此,现在的实际问题是,如何逐行解析MySql结果,以获取ID和Slug信息?
侧注1:整个脚本已经生成并以某种方式手动运行。我现在需要这些信息,以便更加自动化导出脚本。
*侧注2:通过Vagrant ssh执行的MySql,如下所示:*
sudo vagrant ssh --command "mysql -uroot -proot -e 'SELECT blog_id FROM wp.wp_blogs'"发布于 2014-12-29 10:27:37
可以使用以下方式将结果保存在文件中:
SELECT blog_id, path FROM wp.wp_blogs
INTO OUTFILE '/tmp/blogs.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'然后您可以逐行处理它,无论是使用And /awk/simple循环。假设您想搜索站点并将其替换为mysite,您可以这样做:
awk -F',' '{print "Id: " $1 ", path: "$2}' /tmp/blogs.csv ##or simply cat the file.https://stackoverflow.com/questions/27686995
复制相似问题