我有以下 bash 命令,它从 mysql 的单个列中获取和阻止 XML,并将其提供给 xmllint 以对其进行美化。
mysql --format csv --skip-column-names -e "select xmldata from mytable limit 1;" | xmllint --format -
Run Code Online (Sandbox Code Playgroud)
到目前为止一切顺利,但它一次只适用于一行。我想对此进行调整,以便将 SQL 查询输出中的每一行都输入到对 xmlint 的单独调用中。
我知道这可以通过 bash 脚本中的循环来完成——但如果可能的话,我想在单行中完成。据说这可以用 xargs 来完成,但我无法弄清楚。
mysql --format csv --skip-column-names \
-e "select xmldata from mytable limit 1;" \
| while IFS= read -r line; do xmllint --format - <<<"$line"; done
Run Code Online (Sandbox Code Playgroud)
拆分以便于阅读,显然您不需要这样做。的<<<$line是herestring,该进料的含量$line,以xmllint作为标准输入。