我有一个脚本loop.sh
,每隔几个小时运行另一个脚本task.sh
,它们都是同一个git仓库的一部分。
目前,我在一个单独的screen
示例(即它自己的bash
进程)中运行
(main) user@computer:repo-dir > ./loop.sh
其中loop.sh
类似于:
for i in 1 2 3 4 5 6; do
./task.sh
sleep 3h
done
我最近在VS代码中对task.sh
进行了修改,它们被程序自动保存。这使得loop.sh
拿起了task.sh
的一个坏版本并失败。
如果我从main
git分支切换到一个新的new-feature
分支来修改task.sh
,我如何可靠地让loop.sh
及其对task.sh
的调用使用main
版本的文件?
1.一些不太自信的消息人士告诉我,只要在main
中运行loop.sh
,task.sh
也会自动成为main
?
1.一些消息来源相当自信地认为将git checkout main
包含在loop.sh
中是错误的。这是真的吗?为什么?
1.我见过一个
git show main:task.sh | bash
这个可以作为替换吗?原来的./task.sh
接受参数,我有时处理脚本管道的输出。
1条答案
按热度按时间oug3syen1#
如何可靠地使loop.sh及其对www.example.com的调用task.sh使用文件的主版本?
让脚本在一个单独的worktree中运行,这样你就可以在主工作树中处理
new-feature
或任何你想要的分支,而不会干扰你的脚本。并将
loop.sh
更新为(尽管正如其他人所提到的,从Cron触发它是一个更好的选择)。