我有一个在多个数据库上运行mysql查询的脚本。我记录了运行到文件的查询。当我传入查询时它包含新行,但在日志文件中它全部在一行上。多行查询更易于阅读。
e.g:
$ sh run_query.sh 'CREATE TABLE`table` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`field1` int(10) unsigned NOT NULL,
`field2` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
ENGINE=InnoDB;'
bash是否可以将新行保留在传递的变量中?
答案 0 :(得分:1)
在您的评论中,您提到使用此代码:
echo $sql >> logfile
但是,这会导致shell将$sql
值中出现的任何换行符视为空格,以将该字符串分隔为echo
的多个参数。你需要引用扩展:
echo "$sql" >> logfile
答案 1 :(得分:0)
您可以将多行字符串存储在变量中,如下所示:
IFS= read -rd '' sql <<'EOF'
CREATE TABLE`table` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`field1` int(10) unsigned NOT NULL,
`field2` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
ENGINE=InnoDB;
EOF
然后传递给:
sh run_query.sh "$sql"