【问题标题】:Gradle Breaks out of Bash for loopGradle 打破了 Bash for 循环
【发布时间】:2020-06-15 08:41:00
【问题描述】:

我有一个版本历史,我正在尝试在我的 bash 脚本中运行 gradle 构建

while read -r version
do
    git checkout $version
    gradle clean
    gradle javadoc
    ...
done < version-history.log

它试图为我的代码的每个标记版本获取文档。问题是 gradle 运行一次构建,然后跳出 for 循环。我尝试将它封装在一个函数调用中,但它仍然设法跳出循环。这种行为是故意的吗?我怎样才能防止它这样做?我的 gradle 版本是

------------------------------------------------------------
Gradle 6.2.1
------------------------------------------------------------

Build time:   2020-03-01 17:25:20 UTC
Revision:     <unknown>

Kotlin:       1.3.61
Groovy:       2.5.8
Ant:          Apache Ant(TM) version 1.10.7 compiled on September 1 2019
JVM:          13.0.2 (Oracle Corporation 13.0.2+8)
OS:           Linux 5.5.6-arch1-1 amd64

【问题讨论】:

  • 它更有可能 gradle 返回一个非零错误代码,它打破了循环。
  • 我刚刚验证,它返回 0

标签: java bash git gradle


【解决方案1】:

Gradle 出于某种原因使用输入,这就是导致这种行为的原因。将&lt;/dev/null 附加到 gradle 调用似乎可以解决问题,尝试

while read -r version; do
  git checkout $version
  gradle clean </dev/null
done <version-history.log

【讨论】:

    猜你喜欢
    • 2021-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多