0

我希望函数“printReps”为它收到不止一次的每个数字打印“错误”1 次,但它只打印一个空行。这是代码,任何人都可以告诉我我的错在哪里,谢谢。

 function printReps {
echo $* | { read -a idNumbs
i=0
while (( $i < ${#idNums[*]} )); do
    error=0
    if (( ${idNums[i]} < 1 )); then
        let i++
        continue
    fi
    j=i+1
    while (( $j < ${#idNums[*]} )); do
        if (( idNums[i] == idNums[j] )); then
            idNums[j]=0
            error=1
        fi
        let j++
    done
    if (( $error == 1 )); then
        echo error
    fi
    let i++
done
}  
}
echo `printReps 1 1 23 4 78 23 1 4 9`

所有合法数字都大于 0。

4

1 回答 1

1

哇,这是一个复杂的解决方案

printReps () {
    local seen
    for arg; do
        if [[ ${seen[$arg]} ]]; then
            echo error $arg
        fi
        seen[$arg]=yes
    done
}

printReps 1 1 23 4 78 23 1 4 9
error 1
error 23
error 1
error 4
于 2013-05-29T02:53:19.460 回答