我正在使用 git log 为我的项目更新 release_notes。当我在我的 mac 笔记本电脑上运行下面的脚本时,一切都按预期工作,当我在 centos 上运行的 jenkins 上运行时,我看到以下执行顺序:
脚本
...
FILE=RELEASE_NOTES
TMP_FILE=${FILE}.tmp
VERSION=$(cat pom.xml | grep "<version>" | head -n1 | sed -e "s/.*\>\(.*\)\<.*/\1/" | tr -d "\-SNAPSHOT")
NAME=$(cat pom.xml | grep "<artifactId>" | head -n1 | sed -e "s/.*\>\(.*\)\<.*/\1/")
echo "$NAME-${VERSION}" > ${TMP_FILE}
git log --pretty="%x09* [%h] %s." $(git describe --abbrev=0)..HEAD >> ${TMP_FILE}
echo "" >> ${TMP_FILE}
if [ -e $FILE ]; then
cat ${FILE} >> ${TMP_FILE}
fi
mv ${TMP_FILE} $FILE
...
使用 #!/bin/bash -x 运行时 jenkins 的输出
+ FILE=RELEASE_NOTES
+ TMP_FILE=RELEASE_NOTES.tmp
++ tr -d '\-SNAPSHOT'
++ head -n1
++ cat pom.xml
++ sed -e 's/.*\>\(.*\)\<.*/\1/'
++ grep '<version>'
+ VERSION='</'
++ head -n1
++ sed -e 's/.*\>\(.*\)\<.*/\1/'
++ cat pom.xml
++ grep '<artifactId>'
+ NAME='</'
+ echo '</-</'
++ git describe --abbrev=0
我无法弄清楚为什么执行顺序会发生变化。有什么想法吗?