首页 > 解决方案 > 如何在 xargs 中将函数作为参数传递?

问题描述

我有这个例子:

migrate(){
    case $1 in 
        "team_container")
            echo "Rodando Migrate de ${1}",

            ;;
        "evaluation_container")
            echo "Rodando Migrate de ${1}",

            ;;
        "school_container")
            echo "Rodando Migrate de ${1}",

            ;;
        "class_container")
            echo "Rodando Migrate de ${1}",

            ;;
        "student_container")
            echo "Rodando Migrate de ${1}",

            ;;
        "messages_container")
            echo "Rodando Migrate de ${1}",

            ;;
        "logs_container")
            echo "Rodando Migrate de ${1}",

            ;;
    esac
}
export MIGRATE=migrate;
docker ps  --format {{.Names}} | xargs bash -c "MIGRATE {}"

输出:

迁移:找不到命令

xargs 找不到该函数,即使导出它并调用子shell。

如何将我的函数迁移作为参数传递给 xargs?

标签: bash

解决方案


将其作为参数传递:

xargs -n1 bash -c 'migrate "$1"' _

记得导出你的函数:

export -f migrate

推荐阅读