协助编写bash函数

时间:2013-05-29 01:16:26

标签: bash shell scripting

我希望函数“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。

1 个答案:

答案 0 :(得分: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