bash脚本,创建目录中所有文件的数组

时间:2014-02-10 03:09:25

标签: arrays bash shell while-loop

我有许多.html文件的目录myDir。我正在尝试创建目录中所有文件的数组,以便我可以索引数组并能够引用目录中的特定html文件。我尝试过以下一行:

myFileNames=$(ls ~/myDir)

for file in $myFileNames; 
#do something

但我希望能够拥有一个计数器变量,并具有如下逻辑:

 while $counter>=0;
   #do something to myFileNames[counter]

我对shell脚本很陌生,我无法弄清楚如何实现这一点,因此会对此事有任何帮助。

3 个答案:

答案 0 :(得分:30)

你可以这样做:

# create an array with all the filer/dir inside ~/myDir
arr=(~/myDir/*)

# iterate through array using a counter
for ((i=0; i<${#arr[@]}; i++)); do
    #do something to each element of array
    echo "${arr[$i]}"
done

你也可以这样做迭代数组:

for f in "${arr[@]}"; do
   echo "$f"
done

答案 1 :(得分:7)

您的解决方案可用于生成阵列。而不是使用while循环,使用for循环:

#!/bin/bash
files=$( ls * )
counter=0
for i in $files ; do
  echo Next: $i
  let counter=$counter+1
  echo $counter
done

答案 2 :(得分:0)

# create an array with all the filer/dir inside ~/myDir
arr=(~/myDir/*)

# iterate through array indexes to get 'counter'
for counter in ${!arr[*]}; do
    echo $counter           # show index
    echo "${arr[counter]}"  # show value
done