将函数名称作为脚本中的位置参数之一传递

亚历山大·克莱汉斯

我想创建一个bash函数bar,该函数将一个函数foo作为参数,但也带有foo参数。

function foo() {
    foo_args=("$@")
    for i in "${foo_args[@]}";
        do
            echo "$i"
        done
}

function bar() {
        ($1) 
}

foo_args=(
        "one" "two" "three"
)

bar foo foo_args

我怎么foo_argsbar

编辑:

我试过了:

bar foo "${foo_args[@]}"

带有:

function bar() {
        params="${3}"
        ($1 ${params[@]}) 
}

但是foo只看第一个元素。

伊尼安

这是不是很确定您打算什么你做foo()bar()功能,但在功能bar您没有得到整个位置参数,只是$1,用$@代替。我已经修改,以满足您的要求,假设你需要从传递参数的代码bar()foo()由于您的第一个参数包含函数名称,因此请将该函数名称放入$1并用于shift删除$1其余参数$@

还要function从函数定义中删除非标准关键字。不用说是完全可以的

#!/usr/bin/env bash

foo() {
    foo_args=("$@")
    for arg in "${foo_args[@]}"; do
        echo "$arg"
    done
}

bar() {
    function=$1; shift

    [ "$(type -t "$function")" = function ] || 
        { echo "$function prototype is not available" >&2; return 1 ; }

    "$function" "$@"
}

foo_args=(
    "one" "two" "three"
)

bar foo "${foo_args[@]}"

同样可以安全地进行检查type -t以确保所调用函数的原型存在,并且如果不存在则抛出错误消息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将函数名称作为参数传递给mapply?

将联合作为宏中的两个参数之一传递

如何将参数名称作为参数传递?

如何将参数名称作为参数传递给函数

将构造函数中的参数之一传递给单元测试

如何将子类的函数名称作为参数传递给python中的父类方法?

将函数参数名称作为字符串传递

Python3:将函数名称作为参数传递

有没有一种方法可以将列表作为argparse中的参数之一传递

使用函数名称作为参数

clojure函数名称作为参数

如何在Python 3中将函数名称作为String传递

如何将函数中的参数名称作为列值返回?

通过Jenkins Job将JSON作为参数之一传递

Junit5 @ParameterizedTest如何将数组作为参数之一传递

将System .Property名称作为函数参数传递

想要将属性名称作为函数中的参数传递。

如何将组件名称作为参数传递并在函数中接收它

将软件包名称和函数名称作为变量传递给python

如何将对象的函数名称作为参数传递

为什么在这种情况下不能将函数名称作为参数传递?

将函数的参数作为其他函数中的参数名称传递

将函数名称作为操作传递时的混乱行为

将许多按钮绑定到一个函数,将每个按钮的名称作为参数传递

在R中:将列名称作为参数传递,并在dplyr :: mutate()和lazyeval :: interp()函数中使用它

破解我的代码-如何在JavaScript中的另一个函数中使用函数名称作为参数

将 ListBox 名称作为参数传递以在函数中使用 - ACCESS VBA

AngularJS将范围变量名称作为函数参数传递

使用函数名称作为命令