簡體   English   中英

作為bash腳本的一部分調用gradle會終止該腳本

[英]invoking gradle as part of bash script terminates that script

第一次調用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 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM