【发布时间】:2013-04-14 10:00:20
【问题描述】:
我有一个脚本需要多次评估用户输入,我正在研究的解决方案是将评估位放入一个函数中,每次我需要评估输入时只需调用该函数。
问题是,当我尝试更新$1 变量(引用函数的第一个变量参数)时,我收到错误消息“$VARIABLE command not found”。
代码如下:
function input_handler() {
if is_integer $1; then
selid="$1 -1"
if [[ "$1" -le "0" ]]; then
echo "Please use a simple positive number!"
else
if [[ "$1" -le "${#array[*]}" ]]; then
eval $1="${array[selid]}"
echo "Ok, moving on..."
else
echo "That number seems too large, try again?"
fi
fi
else
if [ -e $2/$1 ]; then
echo "Ok, moving on..."
else
echo "That item is not on the list, try again!"
fi
fi
}
还有这个命令:
input_handler $doctype $docpath
给出这个输出:
5
./test: line 38: 5=sun: command not found
好的,继续……
现在这几乎是正确的,但我需要的是 doctype=sun,而不是 5=sun,换句话说,我需要的是 $1 变量名而不是它的值。将行 eval $1="${array[selid]}" 更改为 eval doctype="${array[selid]}" 可修复此特定实例。但这并不能解决我的问题,因为我需要在具有不同名称的不同变量上运行此函数。
【问题讨论】: