我遇到了bash数组循环的问题。
以下代码而不是分别打印每个值,连接两个值并将它们打印出来,就好像它们是一个一样。
#!/bin/bash
declare -a array=( 'sf052' 'to060' 'pw' 'qb099' 'pw22' 'wp039' 'wx12' 'wx11' )
for i in "${array[@]}"; do
echo $i
done
输出:
sf052
to060
pw
qb099 pw22
wp039 wx12
wx11
预期产出:
sf052
to060
pw
qb099
pw22
wp039
wx12
wx11
正在运行bash --version
GNU bash, version 4.2.45(1)-release (x86_64-pc-linux-gnu)
和uname -a
:
Linux server1 3.11.0-12-generic #19-Ubuntu SMP
Wed Oct 9 16:20:46 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
答案 0 :(得分:1)
qb099
和pw22
之间的分隔符应为空格字符。
与wp039
和wx12
相同。
要验证使用octal dump实用程序。
对我来说,输出是预期的:
0000000 # ! / b i n / b a s h \n \n d e c
0000020 l a r e - a a r r a y = (
0000040 ' s f 0 5 2 ' ' t o 0 6 0 '
0000060 ' p w ' ' q b 0 9 9 ' ' p w
0000100 2 2 ' ' w p 0 3 9 ' ' w x 1
0000120 2 ' ' w x 1 1 ' ) \n f o r
0000140 i i n " $ { a r r a y [ @ ]
0000160 } " ; d o \n e c h o
0000200 $ i \n d o n e \n
对于我们大多数人来说,代码可能有效,因为我们从这里复制了它。 但是,如果从Windows复制粘贴(例如Word文档),有时会出现特殊字符,这在视觉上是不可见的。