gpt4 book ai didi

windows - MSYS shell 保持脚本文件打开,防止修改

转载 作者:可可西里 更新时间:2023-11-01 09:25:27 25 4
gpt4 key购买 nike

通常在运行 shell 脚本时,shell 在整个执行过程中保持脚本文件打开。在 Unix 系统上,这不是问题。

但是,Windows 会阻止修改以这种方式打开的文件。这意味着如果脚本在 MSYS 中运行,我需要在修改脚本之前终止 shell。这很烦人,因为 git pullsvn up 会失败。

我正在寻找解决该问题的方法,例如通过我可以放入 #!/bin/sh 行的特定选项,或者某种可能会导致的 shell 单行代码脚本将自身复制到安全位置并改为执行副本。

最佳答案

您可以让脚本自行重新执行。像这样拆分它:

#!/bin/sh
if test -z "$MYSCRIPT_REEXEC"; then
: stuff you do before git pull
exec env MYSCRIPT_REEXEC=1 sh -c "git pull; . '$0'"
fi
: stuff you do after git pull

这是一个简单的例子,$0 可能不包含撇号,并且前半部分设置的参数和任何变量都是不可访问的。很难给出一个更好的通用示例 - 也许,如果我能看到原始脚本?

如果这个仍然不起作用,试试这个:

#!/bin/sh
if test -z "$MYSCRIPT_REEXEC"; then
: stuff you do before git pull
env MYSCRIPT_REEXEC=1 sh -c "sleep 1; git pull; . '$0'" &
exit 0
fi
: stuff you do after git pull

不过,在这种情况下,返回代码都是错误的,等待脚本的任何内容也是如此。

关于windows - MSYS shell 保持脚本文件打开,防止修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13473713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com