v.sh
select f in "$@" ; do
echo $f
done
v.sh a b c
结果如下:
1) a
2) b
3) c
#?
但我想在下面这个,我可以选择选项。
3) a
2) b
1) c
#?
如何轻松解决? Thx提前。
答案 0 :(得分:2)
你无法反转select
的自动编号,但你可以反转执行相同工作的逻辑(逻辑上)。
这个单线测试在我的bash中正常工作,并且选择对应于正确的反转项目:
$: function test { select f in $(echo $@|rev) ;do echo $f;done;};test a b c
1) c
2) b
3) a
#? 1
c
#? 2
b
#? 3
a
PS:在你的脚本中你不需要这个功能。你只需申请
select f in $(echo $@|rev) ;do
echo $f
done
<强>更新强>
正如评论中所述,使用rev
来恢复args对单个字符args有效,例如OP示例(a b c
)。
如果一个论证由更多的字符组成(即cd
),那么rev
也将恢复这个arg(即dc
)。
在这种情况下,以相反的顺序将args存储在数组中会更安全,然后select会像这样引用这个恢复的数组:
$: function test { local arr;for ((i=${#@};i>0;i--));do \
arr+=("${@:$i:1}");done;select f in "${arr[@]}";do echo "$f";done;};test a b cd
1) cd
2) b
3) a
#? 1
cd
此外,必须注意使用*
作为参数。必须引用它(即'*'
),否则bash会将其扩展为当前工作目录的内容。这个限制甚至适用于OP的第一个例子。
答案 1 :(得分:1)
如上所述,您无法修改private async void roll_in()
{
while (UC.Instance.Location.X < panel.Location.X)
{
UC.Instance.Location = new Point((UC.Instance.Location.X + 2));
UC.Instance.Refresh();
if (UC.Instance.Location.X > -10)
await Task.Delay(10);
}
}
的编号,但您可以创建自定义select
实施:
select
向chepner寻求帮助的提示。