如何用Bash脚本读取ASCII配置文件中MULTIPROC的取值
首先,你当前的脚本问题在于用 -n13 每次只读13个字符,没法获取包含参数值的完整行。下面提供两种可靠的解决方案:
方案1:用 grep+cut+tr 快速提取值
这是最简洁的方式,直接通过管道命令提取:
#!/bin/bash # 提取MULTIPROC的值 multiproc_val=$(grep 'MULTIPROC' config/input.config | cut -d'=' -f2 | cut -d',' -f1 | tr -d ' ') # 判断取值 if [ "$multiproc_val" -eq 1 ]; then echo "MULTIPROC 已启用(值为1)" elif [ "$multiproc_val" -eq 0 ]; then echo "MULTIPROC 已禁用(值为0)" else echo "MULTIPROC 值异常:$multiproc_val" fi
方案2:纯Bash脚本(不依赖额外工具)
如果希望用纯Bash实现,可通过逐行读取并匹配处理:
#!/bin/bash config_file="config/input.config" multiproc_val="" while IFS= read -r line; do # 匹配以MULTIPROC开头的行(忽略前导空格) if [[ "$line" =~ ^[[:space:]]*MULTIPROC[[:space:]]*= ]]; then # 截取等号后的部分 value_part="${line#*=}" # 移除逗号及之后的内容 value_part="${value_part%%,*}" # 清除所有空格 multiproc_val=$(echo "$value_part" | tr -d '[:space:]') break # 找到后退出循环 fi done < "$config_file" # 输出判断结果 if [ -n "$multiproc_val" ]; then case "$multiproc_val" in 1) echo "MULTIPROC 设置为1(启用)" ;; 0) echo "MULTIPROC 设置为0(禁用)" ;; *) echo "MULTIPROC 取值不符合预期:$multiproc_val" ;; esac else echo "配置文件中未找到 MULTIPROC 参数" fi
两种方案都能准确提取MULTIPROC的取值,你可以根据需求选择。
内容的提问来源于stack exchange,提问作者Brunodu94
相关产品推荐
相关产品推荐

