【问题标题】:Modifying arguments of shell function? [duplicate]修改shell函数的参数? [复制]
【发布时间】:2016-01-30 00:17:13
【问题描述】:

我对如何修改函数参数有点困惑:

我想要:

bower ln
bower ln thing

执行:

bower link
bower link thing

这是我得到的最接近的:

# ~/.bashrc
bower () {
    if [[ $1 == "ln" ]]; then
        ${@[1]}="link"
        echo "replacing" "$FUNCNAME" "$@"
    fi
    command "$FUNCNAME" "$@"   
}

【问题讨论】:

    标签: bash shell


    【解决方案1】:

    使用set 命令:

    bower () {
        if [[ $1 == ln ]]; then
            set -- link "${@:2}"
            echo "replacing $FUNCNAME $@"
        fi
        command "$FUNCNAME" "$@"
    }
    

    但是,您实际上不必替换第一个参数;您可以简单地将正确的参数硬编码到 if 语句的正文中:

    bower () {
        if [[ $1 == ln ]]; then
            echo "replacing $FUNCNAME $first $@"
            command "$FUNCNAME" link "${@:2}"
        else
            command "$FUNCNAME" "$@"
        fi
    }
    

    【讨论】:

      猜你喜欢
      • 2023-02-23
      • 1970-01-01
      • 2017-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      • 2018-08-08
      相关资源
      最近更新 更多