我想为我的bash脚本创建一个更新函数,以便将来我对提交给存储在github上的脚本的任何更改都可以由最终用户更新。我无法找到bash更新函数的任何示例。
如果我只是这样做一个函数:
function update(){
git clone https://path/to/my/repo.git
}
它只是在我目前的目录中创建了我的仓库的另一个副本。直接在脚本中添加路径 也工作。我怎样才能实现呢?
答案 0 :(得分:0)
如果更新功能是最终用户更新脚本副本的话,那么这可能就是你要找的东西。
update(){
cd /tmp
git clone https://path/to/my/repo.git
# cd into the cloned directory if need to reach script
mv script.sh /to/location/of/old/script
# or
rm /location/of/old/script.sh
mv script.sh /to/location/of/old/script
}
答案 1 :(得分:0)
这应该可行,但如上所述,不要将dev和用户放在同一目录中!
function update {
git pull
}
最终,如果您需要执行特定命令以备更新可用,您可以使用类似
的内容function update {
if [[ "$(git pull|grep Already)" = "" ]]; then
echo "script has just been updated"
else
echo "no update was available"
fi
}
另外,如果你这样做可以派上用场的一件事就是拥有一个单独的设置文件,你可以从你的脚本和“.gitignore”获取 - 所以人们不必重置他们的设置每次更新
答案 2 :(得分:0)
也许你需要getFormsUsersRef(formId): firebase.database.Reference {
let formsRef = firebase.database().ref("formsByID");
return formsRef.child(formId).child("usersList");
}
每隔一秒强制从a_branch到tmp_branch的新变化。
git -f pull origin a_branch:tmp_branch
答案 3 :(得分:0)
我需要一个下标中的更新功能,而无需git拉整个目录,结果如下: (来自https://bitbucket.org/jupiter126/sheldon/raw/master/backup_skel.sh)
if [ "$(grep 'autoupdate=1' $directory/backup_$(hostname).sh)" != "" ]; then
oldver=$(cat "$directory/backup_skel.sh"|grep -v "("|grep backupversion|cut -f2 -d"=")
newver=$(curl -s https://bitbucket.org/jupiter126/sheldon/raw/master/backup_skel.sh|grep -v "("|grep backupversion|cut -f2 -d"=")
if [ "$newver" -gt "$oldver" ]; then
echo "new version detected, updating backup script"
mv "$directory/backup_skel.sh" "$directory/backup_skel.old"
$wwwget -q https://bitbucket.org/jupiter126/sheldon/raw/master/backup_skel.sh -O"$directory/backup_skel.sh" && sleep 2 && chmod +x "$directory/backup_skel.sh" && sleep 2 && exec "$directory/backup_skel.sh"
fi
fi