我有一些变量正在通过各种机器传递(通过 php 和其他 bash 脚本)并最终到达最后一个服务器。
我使用这些变量来填充 mysql 数据库条目。
一切正常,直到我尝试将其中一个条目的 2 个变量连接在一起,这导致将完全错误的变量输入到数据库中。
这是变量到达脚本时的示例:
$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
...在 track_id 字段中输入的不是 48101216,而是 8388607
是否发生了一些奇怪的数学运算,或者这是正在生成的错误代码?
我也尝试过像这样连接它们:
trackID=$4$6;
像这样:
trackID="$4$6"
像这样:
insert into db_table (uid, ts_id, track_id) values ('$4', '$6', '$4$6');
但它们都得出神秘的 8388607 ??
即使每次运行时两个变量中的数字都不同,当我连接它们时,我总是得到 8388607?
我做错了什么?
最佳答案
track_id 列的定义是什么?三字节整数允许的值范围为 -8388608 到 +8388607。
关于php - 连接 2 个 BASH 变量会产生奇怪的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37913080/