我在编写shell脚本时遇到问题。我有一个数据库中的表,其中有一个文本字段..我需要将该字段写入文件。
数据库字段是id,file_name,text
这是我的脚本
#!/bin/bash
while read -a row
do
cat <<EOF >/root/${row[1]}
${row[2]}
EOF
sleep 1
done < <(echo "SELECT * FROM installation WHERE status = 1" | mysql -h 127.0.0.1 -u root -padmin -D data -s)
我试过
echo "${row[2]}" > /root/${row[1]}
但它只写了第一行,但是 文本字段是多行文本,我需要在该文件中写入全文
请帮助
答案 0 :(得分:0)
默认情况下,read -r row
会按空格/制表符/换行符进行单词拆分。由于表格中的文本字段包含换行符,因此单词拆分会削减文本结果。在这种情况下,很难避免它。
我建议您将新线替换为另一个标记,例如###或只是new-line
,在SQL中使用REPLACE(text, "\n", 'new-line')
(我不熟悉sql REPlACE函数),然后从shell获取结果,然后使用${row[2]//new-line/$'\n'}
将新行转换回来