将具有相同键的变量添加到数组时是否枚举



这一定很简单,但我无法理解。我试着查看GNU文档,并在堆栈上寻找类似的答案,但我什么都找不到。

我有一个循环,它复制了一堆文件,每次复制后,我都会检查退出代码,看看它是否成功,并在此基础上设置一个变量。Copy=OKCopy=failed

我想把每个结果添加到一个数组中,这样我以后就可以检查是否有文件复制失败,这样我就可以得到类似copy[0]=OK copy[1]=failed的东西,这样我可以搜索失败的副本。

我得到的最接近的是这个,但这只是保存了OK,并失败了一次。

declare -A TEST
copy=OK
TEST[$copy]=$copy
copy=OK
TEST[$copy]=$copy
copy=OK
TEST[$copy]=$copy
copy=failed
TEST[$copy]=$copy
echo ${TEST[*]}

为成功和失败保留两个单独的数组会更干净。这里有一个伪代码:

# initialize arrays
ok=()
fail=()
while file in *.txt do;
# run copy command
if [[ $? -eq 0 ]]; then
ok+=("$file")
else
fail+=("$file")
fi
done
# print success cases
printf '%sn' "${ok[@]}"
# print failure cases
printf '%sn' "${fail[@]}"

使用简单的索引数组并像这样附加

test=()
test+=("$copy")
echo "${test[@]}"

最新更新