随笔-shell-解析配置文件(k=v格式)

function util_parse_config_file() {
    [[ $# != 1 || ! -e "$1" ]] && exit -1

    OLD_IFS="$IFS"
    IFS=$'\n' for line in $(<$1); do
        [[ -z "$line" || "$line" =~ ^\#.* ]] && continue

        value=${line#*=}
        value=${value//\"}

        case "${line%=*}" in
            sip_srv)           sip_srv="$value"           ;;
           ...
            *)                 echo "not support: $line"  ;;
        esac
    done
    IFS="$OLD_IFS"
}

注1: 修改IFS,因为默认IFS包含空格,如果一行包含空格,则会被拆分

注2: shell 按行读取

    # while read -r line; do
    #    ...
    # done < $1

这种如果最后一行没有以换行符结尾,则读不到

posted @ 2024-12-28 12:06  LiYanbin  阅读(14)  评论(0)    收藏  举报