【发布时间】:2016-04-17 22:04:17
【问题描述】:
我需要将两个目录的内容保存在一个数组中,以便稍后进行比较。这就是我写的解决方案:
DirContent()
{
#past '$1' directorys to 'directorys'
local DIRECTORYS=`ls -l --time-style="long-iso" $1 | egrep '^d' | awk '{print $8}'`
local CONTENT
local i
for DIR in $DIRECTORYS
do
i=+1
CONTENT[i]=${DIR}
done
echo $CONTENT
}
然后,当我尝试打印此数组时,我得到空输出。两个目录都不为空。请告诉我我在这里做错了什么。 谢谢,Siery。
【问题讨论】:
-
你确定
i=+1?我觉得应该是((i=i+1)) -
是的。你有权利。当 '((1=i+1))' 修改值时,'i=+1' 将元素添加到数组中。我犯的下一个错误可能是'CONTENT[i]'而不是'CONTENT[$i]'。但是函数仍然返回空数组,问题出在其他地方。
-
1 = i+1 肯定不是,1 不能是作业的 LHS。 1 永远是 1。
-
抱歉,我拼错了,现在是欧洲凌晨 5 点 :)。 *'((i=i+1))'
-
你知道'print $8' 如果文件名中有空格等会失败吗?你能排除这种模式吗?顺便说一句:如果您发布问题的能力受时间影响很大,您应该去睡觉并询问何时再次适合。为什么不使用
content=($(ls -l ... '{print $8}')创建数组?生成数组?