如何为bash脚本创建更新功能

时间:2017-10-18 18:43:43

标签: git bash

我想为我的bash脚本创建一个更新函数,以便将来我对提交给存储在github上的脚本的任何更改都可以由最终用户更新。我无法找到bash更新函数的任何示例。

如果我只是这样做一个函数:

function update(){
  git clone https://path/to/my/repo.git
}

它只是在我目前的目录中创建了我的仓库的另一个副本。直接在脚本中添加路径 也工作。我怎样才能实现呢?

4 个答案:

答案 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