如何在Bash中自定义select循环

3
我想知道是否可以自定义bash中的select循环。以下是代码: 我有这段代码:
select varName in list
do
case $varName in
    pattern1)
        command1;;
    pattern2)
        command2;;
    pattern1)
        command3;;
    *)
        echo "Error select option 1..3";;
esac            
done

输出结果大致如下:

 1) columbia    3) challenger  5) atlantis    7) pathfinder
 2) endeavour   4) discovery   6) enterprise
 #? 

我希望在横向视图中对选项进行排序,并将提示[#?]更改为其他内容。
谢谢。

这个问题可能更适合于:http://unix.stackexchange.com/ - Seth McClaine
1个回答

2

select 命令可以显示 PS3 提示符。

你可以尝试以下方法:

echo $PS3
old_PS3=$PS3
export PS3="make a selection :D"
list='columbia challenger atlantis pathfinder endeavour discovery enterprise'
select varName in $list
do
case $varName in
    pattern1)
        command1;;
    pattern2)
        command2;;
    pattern1)
        command3;;
    *)
        echo "Error select option 1..3";;
esac            
done
# set PS3 back to original
export PS3=$old_PS3

这个可以,谢谢。横屏视图呢?我很感激 ;) - shaveax
@shaveax 如果你想要格式化菜单,而不涉及使用awk和设置IFS和OFS等古怪的事情,我建议你看看类似于“whiptail”的东西。 - jmunsch
另请参阅:http://unix.stackexchange.com/questions/203309/can-i-change-how-select-options-are-displayed 基本上,您可以使用不同的工具来进行格式化,而不是试图强制select进入格式。例如,使用columnprintf或者普通的echocase语句。 - jmunsch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接