Bash - 检查在另一个文件中建立的参数

Bash - 检查在另一个文件中建立的参数

我有一个 bash 脚本,可以读取具有属性的文件。

属性文件

param1=value1
param2=value2
param3=value3

猛击

file="./parameters.txt"

if [ -f "$file" ]
then
    echo "$file found."

    while IFS='=' read -r key value
    do
        key=$(echo $key | tr '.' '_')
        eval "${key}='${value}'"
    done < "$file"

else
    echo "$file not found."
fi

我想检查每个参数是否不为空。

if [ -z ${param1} ]
then
    echo "Param1 is empty"; exit 1
fi

我可以检查它们,if-else但我想知道一些更动态的方法。

最好的方法是什么?

答案1

嗯,最好的方法始终取决于用户。但是由于您正在使用bash,因此您可以使用 shell 参数扩展${!<var-name>}
您还可以使用.source读取包含变量的文件。

#!/bin/bash

file="./parameters.txt"

if [ -f "$file" ]
then
    echo "$file found."

    # Read in the values from the file.
    . "${file}"

    # Iterate over the keys of the file and test if the variable contains anything.
    while read key;
    do
        # Here comes the parameter expansion. 
        if [ -z "${!key}" ]
        then
            echo "${key} is empty"
        fi
    done <<< $(cut -d '=' -f 1  parameters.txt)
else
    echo "$file not found."
fi

答案2

尝试这个:

#!/bin/bash

check()
{
    local file="./parameters.txt"
    local assertion var val

    while read assertion
    do
    var=${assertion/=*}
    test "${var}" != "${assertion}" || return 1
    val=${assertion#*=}
    test -n "${val}" || return 3
    done < ${file}

    return 0
}

check

相关内容