【发布时间】:2014-10-17 14:03:14
【问题描述】:
我这里写了这个函数:我想这样运行,choose "title";
function choose {
echo $1;
randNum=$RANDOM
let "numChoices=${#$1[@]}";
let "num=$randNum%$numChoices";
i=0;
while [ $i -lt $numChoices ]; do
if [ $i -eq $num ]; then
echo ${$1[$i]};
break;
fi
((i++));
done
}
当它运行时,我希望最终产品与此相同:(将所有 $1 替换为标题)
function choose {
echo title;
randNum=$RANDOM
let "numChoices=${#title[@]}";
let "num=$randNum%$numChoices";
i=0;
while [ $i -lt $numChoices ]; do
if [ $i -eq $num ]; then
echo ${title[$i]};
break;
fi
((i++));
done
}
但是,我得到的只是这个错误:
notify.sh: line 67: numChoices=${#$1[@]}: bad substitution
经过相当多的文档搜索,我还不能很好地理解替换、指针和引用。有人可以提供一些见解,并纠正我的语法吗?
【问题讨论】:
标签: arrays bash function variables parameters