On Sat, Oct 14, 2023 at 12:55:21PM -0400, Ti Strga wrote: > it's just the "[[ -v > foo ]]" tests to see where along the cloning process we are.
*Shudder* I foresee so much more pain in your future. Seriously, this is going to blow up in your face at some point. -v peeks into some incredibly dark and spooky corners of the shell, and will expose *precisely* how your assumptions about the shell differ with those of the bash author. Also, it's been historically buggy. I'm inclined to agree with Grisha Levit. This whole thing looks like a massively out-of-control X-Y problem. If the *real* goal is to overwrite a running script with a new version of itself, and then re-exec it, then the correct solution is to wrap the script in a single compound command so that it gets read and parsed up front, before beginning execution of the main loop. Either wrap the whole thing in "{" ... "}" as Grisha suggested, or wrap the whole thing in a "main()" function and then call main "$@". That way, you can overwrite the file without sabotaging running instances of the script.