【发布时间】:2013-02-13 16:54:09
【问题描述】:
鉴于以下陈述:
ac_reg_ids="-1" #Starting value
(mysql) | while read ac_reg_id; do
echo "$ac_reg_id" #variable is a result of a mysql query. Echoes a number.
ac_reg_ids="$ac_reg_ids, $ac_reg_id" #concatenate a comma and $ac_reg_id, fails.
done
echo "ac_reg_ids: $ac_reg_ids" #echoes -1
现在根据这个答案:https://stackoverflow.com/a/4181721/1313143
串联应该有效。但是,为什么不呢?循环内有什么不同?
以防万一:
> bash -版本
> GNU bash,版本 4.2.8(1)-release (i686-pc-linux-gnu)
更新
使用 set -eux 输出:
+ echo 142
142
+ ac_reg_ids='-1, 142'
+ read ac_reg_id
【问题讨论】:
-
对我来说看起来不错。那是失败的确切代码,复制和粘贴,不是手动输入,没有添加或删除吗?
-
@JohnKugelman 是的,我复制了它。
-
您使用的是哪个版本的 bash?我刚刚使用 4.2.24 进行了尝试,您的示例代码的输出正是您所期望的,如果未设置
ac_reg_id变量,最后一行将打印-1, -
请在这段代码之前运行
set -eux,再次运行并在此处粘贴输出。 -
@Alex 我添加了版本。它比你的要老一点,但我不明白为什么会有这么小的差异。
标签: string bash variables concatenation