我正在编写一个脚本来在端到端测试之前执行任务。其中一个步骤是选择编写这些测试的分支。有时脚本会在不同分支之间发生变化,因此我需要脚本在实际执行之前自行更新。
我的 git 存储库中的 bash 脚本是否可以 self 更新并仅执行新版本?
总结:当我执行 script.sh
时,我希望它检查 git 是否有新版本可用,如果有,下载这个新版本并在旧版本死机时执行它。
最佳答案
这是我想出的脚本:
#!/bin/bash
SCRIPT=$(readlink -f "$0")
SCRIPTPATH=$(dirname "$SCRIPT")
SCRIPTNAME="$0"
ARGS="$@"
BRANCH="Your_git_branch"
self_update() {
cd $SCRIPTPATH
git fetch
[ -n $(git diff --name-only origin/$BRANCH | grep $SCRIPTNAME) ] && {
echo "Found a new version of me, updating myself..."
git pull --force
git checkout $BRANCH
git pull --force
echo "Running the new version..."
exec "$SCRIPTNAME" "$@"
# Now exit this old instance
exit 1
}
echo "Already the latest version."
}
main() {
echo "Running"
}
self_update
main
关于git - 使用 git 的 Shell 脚本 self 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35365799/