【发布时间】:2012-08-31 07:17:43
【问题描述】:
我正在尝试遍历包含其他数组的数组,这些数组由带空格的字符串组成。问题是我似乎无法保留字符串中的间距。如果我将 IFS 更改为 \n,则带有空格的字符串将分为多个项目,或者如果我将 IFS 保持不变,则数组的所有元素都被视为 1 个项目,这是一些示例代码:
#!/bin/sh
low1=("AA QQ" "BB LL")
low2=("CC" "DD")
low3=("EE" "FF")
high=(low1 low2 low3)
for high_item in ${high[@]}
do
eval arrayz=\${$high_item[@]}
#IFS=$'\n'
for item in $arrayz
do
echo $item
done
done
输出:
AA QQ BB 二 抄送 DD EE 法郎如您所见,“AA QQ”和“BB LL”元素已被拆分。
如果我取消注释将IFS 设置为\n 的行,我会得到以下信息:
现在“AA QQ”和“BB LL”连接起来了!
无论如何我可以保留这些元素,就像它们原来一样...我需要输出看起来像这样:
AAQQ BB LL 抄送 DD EE 法郎【问题讨论】:
-
对于
low1,您将每个元素放在单独的行上。对于low2和low3,所有元素都出现在一行中。这是故意的吗?
标签: linux arrays bash shell for-loop