【发布时间】:2012-07-10 05:39:28
【问题描述】:
我在使用 IFS 将字符串转换为数组时遇到问题。这是我的字符串:
"Jun01 Jun02 Jun03 Jun04 Jun05 ..." #in that format, separated by spaces
这是我尝试过的代码:
IFS=" " #set it to space character
DATES_ARRAY=($DATES_STRING) #from above
echo ${DATES_ARRAY[0]} #output is empty
但是,当我删除 IFS 行时,它可以工作。但是我用了几行来打印出它的默认 ASCII 值,我得到了 '32' 这意味着 'Space' 字符。作为一名强迫症程序员,为了安全起见,我想自己设置它......我不知道它是如何预先预设的!
那么为什么尝试手动将 IFS 设置为 Space 不起作用?
【问题讨论】:
-
您的代码在 bash v3.2.25 上运行,您使用的是什么语言环境?
-
不确定,如何才能知道?
-
适用于我的 GNU bash 版本 4.2.29。尝试将空格放在“ ”之类的地方,看看是否有什么不同。
-
几分钟前刚刚回答了类似的问题:stackoverflow.com/a/11416230/1327576
-
@YoungMoney,它与预期行为有何不同?它对我有用:
string="a b c d e"; tokens=(${string}); echo "Third token: ${tokens[2]}"打印出Third token: c,正如我所料。
标签: arrays string bash scripting