Gradle任务类型:Exec无法导出env var

时间:2018-06-13 17:46:30

标签: docker gradle

我试图将我本地的服务公开给docker网络。为此,我需要导出此命令的结果:

ip route show | grep docker0 | awk '{print \$9}'

这是我的gradle任务的样子

task exportEnvVariables( type:Exec ) {
    executable "sh"
    args "-c", "export", "HOST_IP=\$(ip route show | grep docker0 | awk '{print \$9}')"

    /* Have also tried:
    commandLine 'export HOST_IP=$(ip route show | grep docker0 | awk \'{print $9}\')' */

    println System.getenv( "HOST_IP" )
}

1 个答案:

答案 0 :(得分:1)

您当前的方法无法正常工作,只是因为您尝试在导出之前阅读环境变量

配置阶段(例如您的println语句)中执行任务闭包中的任何内容,而在执行阶段执行实际任务操作

您可以使用doLast闭包在执行阶段执行语句

task exportEnvVariables( type:Exec ) {
    executable "sh"
    args "-c", "export", "HOST_IP=\$(ip route show | grep docker0 | awk '{print \$9}')" 

    /* Have also tried: commandLine 'export HOST_IP=$(ip route show | grep docker0 | awk \'{print $9}\')' */

    doLast {
        println System.getenv( "HOST_IP" )
    }
}