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

时间:2020-09-14 09:40:38

标签: bash

这必须非常简单,但我无法弄清楚。我尝试查看GNU文档,并在堆栈上找到了类似的答案,但我什么都找不到。

我有一个循环,可以复制一堆文件,每次复制后,我都要检查退出代码以查看是否成功,然后根据该变量设置一个变量。 Copy=OKCopy=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[*]}

2 个答案:

答案 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[@]}"