【发布时间】:2014-12-25 10:30:23
【问题描述】:
概述:
我希望我的 KSH 脚本测试目录中是否存在某些文件,向用户提供这些文件的列表以及一个数字。然后用户选择他们想要的数字,并将数组中的相关值分配给一个变量。
到目前为止,我有以下内容:
### Create test files in directory ####
touch ABCDEF.jar
touch BCDEFG.jar
touch CDEFGH.jar
touch DEFGHI.jar
touch EFGHIJ.jar
touch FGHIJK.jar
touch GHIJKL.jar
set -A JARS ` ls -1 | grep .jar | cut -d'.' --complement -f2-`
for i in ${JARS[@]}; do echo "Number) $i"; done
这会从数组中返回以下列表:
Number) ABCDEF
Number) BCDEFG
Number) CDEFGH
Number) DEFGHI
Number) EFGHIJ
Number) FGHIJK
Number) GHIJKL
首先,我想用一个函数来替换占位符“Number)”,该函数会按顺序增加数字以获得如下效果:
1) ABCDEF
2) BCDEFG
3) CDEFGH
4) DEFGHI
5) EFGHIJ
6) FGHIJK
7) GHIJKL
然后我想让脚本根据用户选择的数字读取用户输入,并将数组中的正确值分配给新变量“JAR_ID”
从表面上看,这似乎是一个简单的问题。但是,我似乎无法理解如何以合乎逻辑的方式执行此操作。
感谢任何想法!
TIA 哈士奇。
【问题讨论】:
-
我没有意识到 Korn 有这个功能来构建选择菜单!但是,我将如何处理数组是动态生成的这一事实?
-
select file from *.jar -
我不确定我的系统上的 'select' 是否会做同样的事情 - man select SELECT(2) Linux Programmer's Manual SELECT(2) NAME select, pselect, FD_CLR, FD_ISSET, FD_SET, FD_ZERO -同步 I/O 多路复用 select() 和 pselect() 允许程序监视多个文件描述符,等待一个或多个文件描述符“准备好”用于某种类型的 I/O 操作(例如,可能的输入)。如果可以在不阻塞的情况下执行相应的 I/O 操作(例如 read(2)),则认为文件描述符已准备就绪。
-
这不是
select(2)。这是select内置的 shell。
标签: arrays shell variables user-input ksh