jas*_*t.h 6 linux arrays bash scripting
我正在创建一个列出文件的bash脚本(在这种情况下是apache sites-available).清单文件是很容易通过我的最终目标是每一个这些文件考虑到一个数组,它们显示给用户,并允许用户选择其中的"文件"来处理,在这种情况下,将启用站点.
我还没有走得太远,我知道我需要将ls设置为数组然后循环操作:
array=$(ls)
for sites in $array(2)
do
echo "$sites"
done
Run Code Online (Sandbox Code Playgroud)
我知道我需要索引目录中的每个文件,然后允许用户键入要启用的数字.所以它看起来像这样:
(1) newdomain.com
(2) newdomain2.com
Which site would you like to enable (i.e 1)?
Run Code Online (Sandbox Code Playgroud)
希望这有道理吗?
您可以使用内置select
功能为自己节省大量的重新实现.
该
select
构造允许轻松生成菜单.它与for
命令的语法几乎相同:Run Code Online (Sandbox Code Playgroud)select name [in words ...]; do commands; done
in
扩展后面的单词列表,生成项目列表.扩展单词集打印在标准错误输出流上,每个前面都有一个数字.如果in words
省略,则打印位置参数,就像in "$@"
已经指定一样.该PS3
然后,显示提示和线从标准输入读取.如果该行由与所显示的单词之一对应的数字组成,则将值name
设置为该单词.如果该行为空,则再次显示单词和提示.如果读取EOF,则select
命令完成.读取的任何其他值都会导致name
设置为null.读取的行保存在变量中REPLY
.
那不是你的使用方式ls
.
array=(*)
Run Code Online (Sandbox Code Playgroud)