我在一个目录中有多个文件,我正在编写一个 bash 脚本来列出所有文件以及它们旁边的索引,以便用户可以根据索引选择要选择的文件,而不是编写整个文件姓名。
例如。
main_dir
- temp_1
- temp_2
我的尝试:
while [[ 1 ]]; do
printf "Which file do you want to use? ($(ls -m ${main_dir})) "
read -r ans
if [[ -d ${main_dir}/${ans} ]]; then
break
else
echo "[ERROR] Failed to choose. Please choose from ($(ls -m "${main_dir}"))."
fi
done
在这种情况下,输出为:
Which file do you want to use? (temp_1, temp_2)
此外,用户必须输入文件名才能选择它。
预期结果:
Which file do you want to use?
1. temp_1
2. temp_2
并且,用户应该能够通过两种方式选择文件,输入名称或索引。
循环 * 并记住数组中的文件:
扩展@Cyrus 关于 bash
select
指令实用性的评论....如果不是因为您规定能够按数字或名称进行选择,那么 bash
select
可能就是您所需要的:虽然对于某些需求,界面可能略显斯巴达式,但当您需要快速而肮脏但外壳级可靠的东西时,
select
它是一个有用的工具,可以放在包里。bash的页面引用了我们可以利用的行为的
man
某些方面:select
因此,通过在调用周围放置一些支持代码
select
,这是可能的:输出: