我该如何修复我的bash数组?

时间:2016-06-16 17:30:04

标签: arrays bash awk subshell

我正在尝试创建一个文件名数组,这样我就可以对一个大文件进行排序,只选择我想要的文件。我的脚本看起来像这样 set STATIONS = Kanto-station-names文件夹" Kanto-station-names"有我想要的文件的名称。接下来是myarr=($(awk '{print $1}') $STATIONS),但终端会立即进入子shell,看起来更像是工作文档,命令不起作用,我无法退出。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

为什么不使用find命令创建一个数组来获取文件名列表?

例如:

#!/bin/bash
IFS=$'\n'
MyArr=($(find /location/to/Kanto-station-names/ -type f -print0 | xargs -0 ls))

echo ${MyArr[@]}
echo ${MyArr[1}
echo ${MyArr[2}
echo ${MyArr[3} 

答案 1 :(得分:0)

你的问题很难理解,但是如果你只想在Kanto-station-names目录中创建一个包含所有文件名的数组,那么这应该可行(请注意,前导' $'是一个提示,而不是你应该键入的东西):

$ myArray=()
$ for FILE in `ls Kanto-station-names` ; do myArray+=($FILE) ; done

之后,您可以访问数组元素:

$ echo ${myArray[0]}
$ echo ${myArray[1]}

等。 要查看数组的所有元素:

$ echo ${myArray[@]}