bash脚本 字符串 比较

我想通过bash脚本,从ini文件中读出一个指定参数,判断是否为一个特定值,我是以下写法:

#!/bin/bash
file='/home/test/config.ini'
section=setting
key=enable
function get_opt() {
        file=$1
        section=$2
        key=$3
        val=$(awk -F '=' '/\['${section}'\]/{a=1}a==1&&$1~/'${key}'/{print $2;exit}' $file)
        echo ${val}
}
val=$(get_opt $file $section $key)
echo $val

if [ -z "${val}" ];then
echo "empty"
fi

if [ $val = "1" ]
then
        echo "val is 1"
else
        echo "val is not 1"
fi

从ini文件的setting节中读出enable的值,判断该值是否为空,是否为1,两个if条件都无法成立,为什么?正确的写法应该是什么?求解,多谢

这得有文件实操一下 不难
可以用egrep -o 仅输出匹配内容 就不会包括特殊字符和空格换行了

不如试试:

if [ -z "$val" ]; then
    echo "empty"
fi

if [ "$val" = "1" ]; then
    ......
fi