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