如何在运行bash脚本时编辑Python脚本,确保后续执行用旧代码
解决方案
方案1:临时复制脚本到独立目录(最直接)
在bash脚本里先把要执行的Python脚本复制到临时目录,之后执行临时目录里的版本。这样你编辑原文件时,临时目录里的副本完全不受影响。
修改你的script.sh为:
# 创建临时目录,自动生成唯一名称 TEMP_DIR=$(mktemp -d) # 复制当前版本的train1.py和train2.py到临时目录 cp train1.py train2.py "$TEMP_DIR/" # 执行临时目录中的脚本 python "$TEMP_DIR/train1.py" python "$TEMP_DIR/train2.py" # 执行完成后清理临时目录(可选,若需要保留日志可注释此行) rm -rf "$TEMP_DIR"
方案2:利用Git归档当前版本(适合Git管理的项目)
如果你的代码已经用Git管理,可以直接归档当前版本的代码到临时目录,确保执行的是脚本启动时的代码状态。
修改script.sh为:
# 创建临时目录 TEMP_DIR=$(mktemp -d) # 将当前Git仓库的已追踪文件归档到临时目录(会忽略未提交的新文件) git archive HEAD | tar -x -C "$TEMP_DIR" # 切换到临时目录执行脚本 cd "$TEMP_DIR" python train1.py python train2.py # 切回原目录并清理临时目录 cd - rm -rf "$TEMP_DIR"
如果需要包含未提交的修改,可以改用git stash create生成临时归档:
TEMP_DIR=$(mktemp -d) # 生成包含所有未提交修改的临时归档 STASH_ID=$(git stash create) git archive "$STASH_ID" | tar -x -C "$TEMP_DIR" cd "$TEMP_DIR" python train1.py python train2.py cd - rm -rf "$TEMP_DIR"
注意事项
- 临时目录由
mktemp -d生成,默认会放在系统临时分区(一般是/tmp),如果你的脚本需要处理大文件或长时间运行,确保临时分区有足够空间。 - 若需要保留临时文件用于调试,可以注释掉
rm -rf "$TEMP_DIR"这一行,执行完后手动清理。
内容的提问来源于stack exchange,提问作者a_communist_comrade
相关产品推荐
相关产品推荐

