Mysql 在读取时使用单个变量中的bash concat字符串
在下面的脚本中,我尝试从mysql数据库中获取所有表的名称,我希望所有表的名称都打印出来,但无论我做什么或使用哪一个,它都不起作用。我想打印的字符串是相互重叠的表名: 看门狗 这个脚本有什么问题Mysql 在读取时使用单个变量中的bash concat字符串,mysql,database,bash,shell,Mysql,Database,Bash,Shell,在下面的脚本中,我尝试从mysql数据库中获取所有表的名称,我希望所有表的名称都打印出来,但无论我做什么或使用哪一个,它都不起作用。我想打印的字符串是相互重叠的表名: 看门狗 这个脚本有什么问题 mysql -Nse 'show tables' DATABASE | { while read table do alltables="$alltables $table" done echo $alltables; } 是否mysql
mysql -Nse 'show tables' DATABASE |
{
while read table
do
alltables="$alltables $table"
done
echo $alltables;
}
是否
mysql
通过\n\r
而不是\n
来分隔表名?然后,读取
将读取第一个表
,\r第二个表
,依此类推。在大多数linux终端中,\r
会使光标跳回当前行的开头<代码>ABC\r\u将打印为\u BC
正在检查\r
执行mysql-Nse'show tables'数据库| sed's:\r:\\r:'并查看输出。控制字符
\r
将作为文本字符串\r
打印
删除\r
插入一个
…|tr-d'\r'|…
在命令之间。是否是mysql
通过\n\r
而不是\n
分隔表名?然后,读取
将读取第一个表
,\r第二个表
,依此类推。在大多数linux终端中,\r
会使光标跳回当前行的开头<代码>ABC\r\u将打印为\u BC
正在检查\r
执行mysql-Nse'show tables'数据库| sed's:\r:\\r:'并查看输出。控制字符
\r
将作为文本字符串\r
打印
删除\r
插入一个
…|tr-d'\r'|…
命令之间。mysql-Nse'show tables'DATABASE | xargs
mysql命令本身的输出是什么?也就是说,除非你有令人信服的理由不这样做,否则一定要使用IFS=read-r table
。您可能还需要检查echo“$alltables”|od的输出,以便更好地了解值中的确切字符。输出是与\n\r连接的表名,这是罪魁祸首。mysql-Nse“show tables”数据库| xargs
mysql命令本身的输出是什么?也就是说,除非你有令人信服的理由不这样做,否则一定要使用IFS=read-r table
。您可能还想检查echo“$alltables”|od
的输出,以便更好地了解值中的确切字符。输出是与表名连接的\n\r,这是罪魁祸首。检查片段没有显示\r,但它起了作用,谢谢。:)检查代码段没有显示\r,但它工作正常,谢谢。:)