将参数从1个函数传递给另一个函数进行循环?

时间:2014-06-10 16:23:34

标签: arrays linux bash

我不确定这是可行的吗?

但我有2个功能

do_get_array() {
        getArray "/root/1.txt"
        for e in "${array[@]}"
        do
                do_otherfunction $e
        done

}

do_otherfunction() {
        cmd="Print Me $e"
}



getArray() {
    i=0
    while read line # Read a line
    do
        array[i]=$line
        i=$(($i + 1))
    done < $1
}

echo "cmd"

所以,将参数从1个函数传递到另一个函数..但是我不知道如何循环直到它在数组中的最后一个$ e?不确定我解释它是否正确。它回收了第一个$ e,但其余的没有。它就停止了。

1 个答案:

答案 0 :(得分:1)

  

Echo&#39出了第一个$ e,但其余的没有。它就停止了。

您可能打算在函数内部执行echo吗?

do_otherfunction() {
    cmd="Print Me $e"
    echo "$cmd"  ## Or simply echo "Print Me $e"
}

或者您希望将所有消息保存到变量:

do_otherfunction() {
    cmd=${cmd}"Print Me $e"$'\n'
}

虽然效率低下。

只是一些建议:

function do_get_array {
    get_array "/root/1.txt"
    for e in "${array[@]}"; do
        do_other_functions "$e"
    done
}

function do_other_functions {
    echo "Print Me $e"
}

function get_array {
    if [[ BASH_VERSINFO -ge 4 ]]; then
        readarray -t array
    else
        local line i=0
        while IFS= read -r line; do
            array[i++]=$line
        done
    fi < "$1"
}