我试图将文件从目录加载到关联数组中,访问权限为"FDN,4",其中FND是文件的基本名称,4 -是行号:
loadFiles() {
local iter
local comname
local lines
echo "# Loading files"
find ./sys -type f | while read iter
do
comname=$(basename "$iter" .aic)
echo "# $comname"
local i
i=0
while IFS= read -r line
do
commands["$comname,$i"]="$line"
#echo "$comname,$i = ${commands[$comname,$i]}"
((i++))
done < "$iter"
[[ -n $line ]] && commands["$comname,$i"]="$line"
done
}
loadFiles
echo "POP,4 = ${commands[POP,4]}"
我什么也没得到,./sys/dir/POP。Aic文件存在,并且该文件中的第4行也存在。循环内的注释echo显示value赋值
有没有人,请,帮助和告诉我我错在哪里?
找到了罪恶的根源——子壳。Echo "1 2 3" | while <…>将提交下一个子shell,因此变量将仅在本地设置。解决方法是使用while <…>完成<<(find ./sys -type f)