Macos 如何列出带有数字的目录,以便用户可以在bash中选择一个目录?

Macos 如何列出带有数字的目录,以便用户可以在bash中选择一个目录?,macos,bash,ls,Macos,Bash,Ls,好的,我基本上是让用户决定他们想用哪个驱动器来安装软件。我想在“您想安装到哪个驱动器?”的同时发布一个问题,然后列出编号的驱动器,以便用户可以轻松地选择其中一个驱动器。有没有办法给ls结果编号,然后让用户选择一个。我在考虑使用case命令,或者是echo和read,但我就是不能让它正常工作。我还要补充一点,这是在mac上的bash中实现的。非常感谢你 使用选择: PS3='which drive would you like to install to? ' select dir in */ q

好的,我基本上是让用户决定他们想用哪个驱动器来安装软件。我想在“您想安装到哪个驱动器?”的同时发布一个问题,然后列出编号的驱动器,以便用户可以轻松地选择其中一个驱动器。有没有办法给ls结果编号,然后让用户选择一个。我在考虑使用case命令,或者是echo和read,但我就是不能让它正常工作。我还要补充一点,这是在mac上的bash中实现的。非常感谢你

使用
选择

PS3='which drive would you like to install to? '
select dir in */ quit
do
    if [[ $dir == quit ]]
    then
        break
    fi
    echo "$dir"    # or do other stuff
done
如果符合您的需要,您可以在
select
块中使用
case
语句

另外,请参见和。不幸的是,两者似乎都不随OS X提供。

请尝试以下方法:

ls | cat -n; read a; ls | head -n $a | tail -n 1

通常,您会要求用户通过命令行来指定它。好的,所以在实现中,它似乎是在创建一个循环。每次我的下一段代码执行时,它都会返回到问题“您希望安装到哪个驱动器?”。这是来自“ps3=”还是什么原因造成的?只要我使用select命令,我需要使用ps3还是可以使用简单的echo?哦,也非常感谢你@BrandonOney:
PS3
只需设置
select
语句的提示。循环的是
select
语句。
break
语句是退出循环的语句-它可以是
if
case
的一部分。如您所见,我将目录作为选项的一部分进行选择,但我添加了“退出”和一个测试作为另一个选项
EOF
也会退出(例如,用户按下Ctrl-D)。这似乎可行,但我不确定它是如何工作的,输出变量是什么?感谢
ls | cat-n;读一本书;d=`ls | head-n$a | tail-n1`;cd$d