我需要一个可以从远程数据库检索 MySQL 数据的 bash 脚本。实际上我已经完成了,但我现在需要它做的是以某种方式循环记录并将变量传递给另一个 bash 文件。
这是我的 MySQL 调用:
mysql -X -u $MyUSER -p$MyPASS -h$MyHOST -D$MyDB -e'SELECT `theme_name`, `guid` FROM `themes` WHERE `theme_purchased`="1" AND `theme_compiled`='0';' > themes.xml
download_themes.sh
它将数据导出到一个名为 theme.xml 的 xml 文件中,我只是想找出某种方法来循环数据。我试图避免使用 PHP 和 perl,而只是尝试使用 bash。提前致谢。
就像是:
mysql -e "SELECT `theme_name`, `guid` FROM `themes` WHERE `theme_purchased`='1' AND `theme_compiled`='0'" | while read theme_name guid; do
# use $theme_name and $guid variables
echo "theme: $theme_name, guid: $guid"
done
简而言之:mysql
当输出是管道时,命令输出由“\n”分隔的记录和由“\t”分隔的字段。这read
命令读取一行,分割字段,并将每个字段放入一个变量中。
如果您的数据字段中有空格,则默认值会出现一些问题read
分裂。有一些方法可以解决这个问题;但是如果您只读取两个字段,并且其中一个字段不应该有任何空格(例如guid
),然后您可以将“危险”字段放在最后,并且read
会将所有“额外”内容放入最后一个变量中。
像这样:
mysql -e "SELECT `guid` `theme_name`, FROM `themes` WHERE `theme_purchased`='1' AND `theme_compiled`='0'" | while read guid theme_name; do
# use $theme_name and $guid variables
echo "theme: $theme_name, guid: $guid"
done
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)