如何将Git仓库路径作为参数传入Bash脚本并检查状态?
如何将Git仓库路径作为参数传入Bash脚本实现状态检查?
我来帮你调整这个脚本,让它能灵活接收命令行传入的仓库路径,不用再硬编码啦!下面是修改后的完整实现,还加了一些实用的校验逻辑:
#!/bin/bash # 从命令行参数获取所有仓库路径,$@会保留带空格的路径(比如"/home/jeff/My Repo") repos=("$@") # 检查用户是否传入了参数 if [ ${#repos[@]} -eq 0 ]; then echo "用法: $0 <仓库路径1> [仓库路径2] [仓库路径3]..." echo "示例: $0 /home/jeff/github/workshop1 /home/jeff/github/workshop2" exit 1 fi echo "" echo "Checking ${#repos[@]} repositories for status" for repo in "${repos[@]}" do echo "" echo "****** Checking status for ${repo} ******" # 先校验路径是否存在,避免cd失败 if [ -d "${repo}" ]; then # 如果cd失败就跳过当前仓库,不影响后续检查 cd "${repo}" || continue git status echo "--- 最近提交日志(简洁版) ---" git log --oneline -n 5 # 只显示最近5条日志,避免输出过多内容 echo "********************" else echo "⚠️ 错误:路径 ${repo} 不存在或不是有效目录" echo "********************" fi done
关键修改说明:
- 替换硬编码数组:把原来固定的
repos=(...)改成repos=("$@"),$@会捕获所有命令行传入的参数,还能正确处理包含空格的路径。 - 增加参数校验:如果用户忘记传路径,脚本会直接打印用法提示并退出,不会执行后续无效操作。
- 路径存在性检查:提前判断传入的路径是否是有效目录,避免
cd失败导致后续命令报错。 - 优化日志输出:把
git log改成简洁模式(--oneline -n 5),只显示最近5条提交记录,你可以根据需要改回原始的git log。
使用方法:
- 将代码保存为
git-status-checker.sh - 给脚本添加执行权限:
chmod +x git-status-checker.sh - 运行时直接传入仓库路径:
./git-status-checker.sh /home/jeff/github/workshop1 /home/jeff/github/workshop2 /home/jeff/github/workshop3
这样你就可以随时传入任意数量的仓库路径,不用每次修改脚本里的硬编码内容啦!
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

