我有一个能让我检查未设置变量的函数:
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,则会询问并应设置值。我更喜欢在主脚本中使用该函数。
答案 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