如何将字符串拆分成数组?

时间:2016-03-03 12:10:14

标签: bash

我试图向用户展示文件夹中包含的zip文件列表,并让用户可以选择要详细说明的文件。

我正在尝试这个

roms=$(ls ~/roms/*.zip)

PS3="Choose a ROM "
select opt in "${roms[@]}" "quit"; do
....
done 

问题是我的菜单以这种方式显示:

1) /home/realtebo/roms/rom_01.zip
/home/realtebo/roms/rom_02.zip
/home/realtebo/roms/rom_02_v2.zip
....
2) quit

相反,我需要这个

1) /home/realtebo/roms/rom_01.zip
2) /home/realtebo/roms/rom_02.zip
3) /home/realtebo/roms/rom_02_v2.zip
...
n+1) quit

如何爆炸' ls作为数组的结果? 我在linux mint 17.3下使用bash

1 个答案:

答案 0 :(得分:3)

您真的不需要变量(并且当然不鼓励使用ls来填充变量 - 请参阅http://mywiki.wooledge.org/ParsingLs)以便代码可以大大简化为

PS3="Choose a ROM "
select opt in ~/roms/*.zip "quit"; do
   :

如果您想要数组中的文件名,只需使用通配符而不是ls(再次,请参阅上面的链接,了解使用ls打破事情的原因):

roms=(~/roms/*.zip)
select opt in "${roms[@]}" "quit"; do
  :