我试图在bash脚本中使用while循环列出一个目录名数组。
循环代码如下(其中$ len是$ folderArray的长度):
i=0
while [ $i -lt $len ]; do
echo "$i: ${folderArray[$i]}"
let i++
done
但是,我的输出显示如下:
0: folder1
folder2
folder3
etc.
为什么" 1:"和" 2:"没有显示folder2和folder3?
我读过有关使用流程替换来解决此问题的方法,但我不确定这会对此有何帮助。
答案 0 :(得分:3)
它表明您将所有项目存储在数组的一个元素中:
"${folderArray[0]}"
如果你之前尝试过分词,你可能根本就无法拆分它们。请考虑检查用于将行存储到folderArray
的代码。
答案 1 :(得分:1)
首先检查实际存储在folderArray
数组的第一个元素中的内容。最有可能是${folderArray[0]}
:
folder1
folder2
folder3
并且您的while
循环在一次迭代中完成此操作。
只需说出echo "${folderArray[0]}"
换句话说:没有变量消失。你的循环只有一次迭代。
编辑:根据您的评论,可能是这样的:
folderArray=$(ssh ${remoteUser}@${remoteHost} "ls $remoteDir")
count=0
for f in $folderArray ; do
echo "$count: $f"
((count++))
done