如何用Shell循环提取配置文件中相邻依赖字段实现批量git clone
实现方案
实现思路
配置字段顺序固定,空行不影响读取逻辑,只需逐行读取时跳过空行和无关的说明行,按顺序缓存读到的install_path、rev、url字段,凑齐3个字段就组装克隆命令,执行后重置变量等待下一个模块的字段读取即可。
完整脚本
#!/usr/bin/bash filename="$1" # 校验传入的配置文件是否存在 if [ ! -f "$filename" ]; then echo "错误:文件 $filename 不存在" exit 1 fi # 初始化字段存储变量 install_path="" rev="" url="" while read -r line; do # 跳过空行和开头无关的说明行 if [[ -z "$line" || "$line" =~ ^The.*sequence ]]; then continue fi # 匹配install_path字段,提取值并自动去除两端双引号 if [[ "$line" =~ install_path = \"(.*)\" ]]; then install_path="${BASH_REMATCH[1]}" continue fi # 匹配rev字段,提取值并自动去除两端双引号 if [[ "$line" =~ rev = \"(.*)\" ]]; then rev="${BASH_REMATCH[1]}" continue fi # 匹配url字段,提取值后三个字段已凑齐,组装克隆命令 if [[ "$line" =~ url = \"(.*)\" ]]; then url="${BASH_REMATCH[1]}" # 首次运行建议保留echo输出,确认命令符合预期后再执行实际克隆 echo "生成克隆命令:git clone -b '$rev' '$url' '$install_path'" # 确认命令无误后,取消下方注释即可实际执行克隆 # git clone -b "$rev" "$url" "$install_path" # 重置变量,准备读取下一个模块的字段 install_path="" rev="" url="" fi done < "$filename"
使用说明
- 保存脚本为
batch_clone.sh,执行chmod +x batch_clone.sh赋予执行权限 - 运行时传入配置文件路径作为参数即可:
./batch_clone.sh 你的配置文件路径
内容的提问来源于stack exchange,提问作者Salmon
相关产品推荐
相关产品推荐

