如何在shell脚本中为函数的参数赋值

时间:2017-02-15 13:30:46

标签: bash shell

我对shell很新。我需要从shell函数返回多个值,这就是我将参数作为参数发送到函数的原因,就像我们在编程语言中使用指针一样。 我正在调用这个函数

splitDate $date day month year

这里的一个月&年是我想要存储值的变量。 我的函数定义如下所示

splitDate(){
    export IFS="/"
    declare -a var
    index=0
    for word in $1; do
        var[ $index ]=$word

        ((index++))
    done

    $2=${var[0]}
    $3=${var[1]}
}

当我运行此操作时,我收到此错误" day = theValueIWant:command not found" &" month = theValueIWant:找不到命令" 这里有什么不对? 测试用例:如果我提供04/05/2017作为日期 我希望每天存储04,月份来存储05& 2017年存储年

1 个答案:

答案 0 :(得分:3)

您可以使用readread的参数是要填充的变量的名称,可以通过参数扩展以及硬编码来生成。

splitDate(){
    if [[ $1 != ??/??/???? ]]; then
        printf '%s\n' "Date not in dd/mm/yyyy format" >&2
        return 1
    fi
    IFS=/ read -r "$2" "$3" "$4" <<< "$1"
}

提出了这个问题,你真的需要一个单独的功能吗?

# splitDate "$currentDate" day month year
#         vs
# IFS=/ read -r day month year <<< "$currentDate"