如果为空,则使用bash函数验证参数并设置值

时间:2017-02-13 11:43:14

标签: bash function validation arguments

我有一个能让我检查未设置变量的函数:

ValidateArgs () {
for Var in "$@" ; do
    echo "Validating argument $Var with value \"${!Var}\"."
    if [ -z "${!Var}" ] ; then
        echo "Argument \"$Var\" is required. Please define $Var."
        read -rp "Enter $Var: " Var
        echo -e "\n"
    fi
done
}

我希望增强此功能,以便能够在使用read -rp读取后传递的参数设置值。

我尝试了几种组合,是否可以这样做,如果是这样,那将是什么样的方式?

该函数的调用如下:

ValidateArgs Action HostName

如果在通过ValidateArgs函数后取消设置Action和HostName,则会询问并应设置值。我更喜欢在主脚本中使用该函数。

1 个答案:

答案 0 :(得分:1)

尝试创建脚本并使用source在原始shell中运行它,如下所示:

ValidateArgs () {
for Var in "$@" ; do
    echo "Validating argument $Var with value \"${!Var}\"."
    if [ -z "${!Var}" ] ; then
        echo "Argument \"$Var\" is required. Please define $Var."
        printf "Enter $Var: "
        read value
        export $Var=$value
    fi
done
}

ValidateArgs $@

一旦你这样做,你可以像以下一样运行脚本:

source ./test.sh myvar
Validating argument myvar with value "".
Argument "myvar" is required. Please define myvar.
Enter myvar: myvalue

echo $myvar
myvalue