考虑一个通用ask()
函数,它向用户提出问题,读取输入并将其保存在根据函数参数之一命名的变量中。
ask() {
local question="$1"
local varname="$2"
echo "$question"
read $varname
}
假设我想问用户他最喜欢的宠物是什么,并将答案存储在一个名为$pet
. 用法如下:
ask "What is your favourite pet?" pet
我想要做并且需要帮助的是检查用户的输入是否为空,在这种情况下将用户的输入设置为某个字符串。如果存储用户输入的变量的名称是恒定的,我将能够轻松地做到这一点,如下所示:
if [ -z "$pet" ]; then
pet="foo"
fi
但是,我要检查是否为空的变量的名称是我作为第二个参数传入的任何内容。如何检查$varname
包含用户输入的变量(根据 的值命名)是否为空?该解决方案应尽可能便携和标准,并且必须专门在 bash 和 zsh 下工作。