bash - 作为bash脚本的一部分调用gradle会终止该脚本

标签 bash gradle

首次调用gradlew后,以下脚本将终止。这是为什么?

#!/usr/bin/env sh

find $PWD -maxdepth 1 -type d | while read d; do
  cd $d
  echo "cd" $d
  if [ -e "pom.xml" ]; then
    echo $d " contains pom.xml"
    mvn clean
    echo "cleaned" $d
  fi
  if [ -e "gradlew" ]; then
    echo $d " contains gradlew"
    ./gradlew -q clean
    echo "cleaned" $d
  fi
done 

输出:
$ ./clean-all 
cd /home/user/code
cd /home/user/code/smstest
/home/user/code/smstest  contains gradlew
cleaned /home/bpiech/code/smstest

如果我评论gradle调用,它适用于每个Maven项目。

最佳答案

将while循环更改为for-in循环解决了我的问题。不过,很高兴知道为什么它会以这种方式工作。

#!/usr/bin/env sh

for d in $(find $PWD -maxdepth 1 -type d); do
  cd $d
  echo "cd" $d
  if [ -e "pom.xml" ]; then
    echo $d "contains pom.xml"
    mvn clean
    echo "cleaned" $d
  fi
  if [ -e "gradlew" ]; then
    echo $d "contains gradlew"
    ./gradlew clean
    echo "cleaned" $d
  fi
done 

关于bash - 作为bash脚本的一部分调用gradle会终止该脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27618024/

相关文章:

bash - golang - 在空的 bash 窗口中打开文件

linux - BASH:如何选择字符串中给定字符之后的所有字符?

linux - 为 ping ssh 端口添加超时?

android - Kotlin Android 项目无法同步 Gradle 项目

java - 如何在 buildspec.yml 中正确定义阶段和命令?

bash - 密码输入后,bash脚本不会生效

macos - 找不到 Mac 终端 -bash 命令?

JDK 1.8 或更高版本与 Cordova 的 Java 11 要求检查失败

libs 和 jniLibs 的 Android Studio 依赖问题

Android 资源链接失败