BuddyPress bbPress

Shell 实测多种不同姿势给函数传参数组

标签:,
  • 755  1#5683
    飞仔
    参与者
    楼主

    Shell 实测多种不同姿势给函数传参数组

    定义数组:array_test

    array_test=(
        "AB-200  10  20"
        "CD-168  16  88"
    )

    定义函数:fun_test

    function fun_test() {
        echo "参数总览:"
        echo "$*"
        echo "-----"
        echo "参数个数:$#"
        echo "参数1:"
        echo "$1"
        echo "-----"
        echo "参数2:"
        echo "$2"
        echo "-----"
        echo "参数3:"
        echo "$3"
        echo "-----"
    }

    我想以一个参数(多行文本的形式)传参给 fun_test 函数:

    AB-200  10  20
    CD-168  16  88

    尝试了多种姿势,都没有实现
    下面开始测试传参:

    fun_test ${array_test[*]}
    参数总览:
    AB-200 10 20 CD-168 16 88
    -----
    参数个数:6
    参数1:
    AB-200
    -----
    参数2:
    10
    -----
    参数3:
    20
    -----
    
    fun_test "${array_test[*]}"
    参数总览:
    AB-200  10  20 CD-168  16  88
    -----
    参数个数:1
    参数1:
    AB-200  10  20 CD-168  16  88
    -----
    参数2:
    
    -----
    参数3:
    
    -----
    
    fun_test ${array_test[@]}
    参数总览:
    AB-200 10 20 CD-168 16 88
    -----
    参数个数:6
    参数1:
    AB-200
    -----
    参数2:
    10
    -----
    参数3:
    20
    -----
    
    fun_test "${array_test[@]}"
    参数总览:
    AB-200  10  20 CD-168  16  88
    -----
    参数个数:2
    参数1:
    AB-200  10  20
    -----
    参数2:
    CD-168  16  88
    -----
    参数3:
    
    -----
    
    fun_test "$(printf "%s\n" "${array_test[@]}")"
    参数总览:
    AB-200  10  20
    CD-168  16  88
    -----
    参数个数:1
    参数1:
    AB-200  10  20
    CD-168  16  88
    -----
    参数2:
    
    -----
    参数3:
    
    -----

    最后,肯定实现了:

    fun_test "$(printf "%s\n" "${array_test[@]}")"
    参数总览:
    AB-200  10  20
    CD-168  16  88
    -----
    参数个数:1
    参数1:
    AB-200  10  20
    CD-168  16  88
    -----
    参数2:
    
    -----
    参数3:
    
    -----
    • 该话题由飞仔 于 2年、 2月前 修正。
回复 0
  • 哎呀,回复话题必需登录。