这必须非常简单,但我无法弄清楚。我尝试查看GNU文档,并在堆栈上找到了类似的答案,但我什么都找不到。
我有一个循环,可以复制一堆文件,每次复制后,我都要检查退出代码以查看是否成功,然后根据该变量设置一个变量。 Copy=OK
或Copy=failed
我想将每个结果添加到一个数组中,以便以后可以检查是否有任何文件副本失败,所以我最终会得到类似copy[0]=OK copy[1]=failed
之类的东西,以便可以搜索失败的副本。
我最接近的是这个,但这只是保存好,一次失败了。
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[*]}
答案 0 :(得分:2)
将两个成功和失败的阵列分开保存会更清洁。这是一个伪代码:
# 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 '%s\n' "${ok[@]}"
# print failure cases
printf '%s\n' "${fail[@]}"
答案 1 :(得分:1)
使用简单的索引数组并像这样附加它
test=()
test+=("$copy")
echo "${test[@]}"