连接2个BASH变量会产生奇怪的价值

时间:2016-06-20 00:00:35

标签: php mysql bash

我有一些变量通过各种机器(通过php和其他bash脚本)传递,最终到达最后一台服务器。

我使用这些变量来填充mysql数据库条目。

一切正常,直到我尝试将其中一个变量连接在一起,导致输入完全错误的变量到数据库中。

这是变量到达脚本时的一个例子:

$4=48
$6=101216

如果我单独使用它们,脚本运行正常:

mysql --host=localhost --user=xxxx --password=xxxx db_name <<EOF
insert into db_table (uid, ts_id) values ('$4', '$6');
EOF

正如预期的那样,uid字段填充了48,而ts_id填充了101216

但是如果我尝试将它们连接起来用于第三个字段......

userID="$4";
trackID="$userID$6";

mysql --host=localhost --user=xxxx --password=xxxx db_name <<EOF
insert into db_table (uid, ts_id, track_id) values ('$4', '$6', '$trackID');
EOF

...而不是48101216被输入track_id字段我得到了8388607

是否有一些奇怪的数学运算或者这是否生成了错误代码?

我也试过像这样连接它们:

trackID=$4$6;

像这样:

trackID="$4$6"

就像这样:

insert into db_table (uid, ts_id, track_id) values ('$4', '$6', '$4$6');

但他们都会产生神秘的8388607 ??

即使每次运行时两个变量中的数字都不同,当我连接它时,我总是以8388607结束?

我做错了什么?

2 个答案:

答案 0 :(得分:1)

track_id列的定义是什么?三字节整数允许的值范围为-8388608到+8388607。

https://bugs.mysql.com/bug.php?id=8769

答案 1 :(得分:1)

您应该查看数据库中的列定义,看它是否可以保存您要插入的值。