web-dev-qa-db-ja.com

bashスクリプト、ディレクトリ内のすべてのファイルの配列を作成

多くの.htmlファイルのディレクトリmyDirがあります。ディレクトリ内のすべてのファイルの配列を作成しようとしているので、配列のインデックスを作成し、ディレクトリ内の特定のhtmlファイルを参照できる場合があります。私は次の行を試しました:

myFileNames=$(ls ~/myDir)

for file in $myFileNames; 
#do something

しかし、私はカウンター変数と次のようなロジックを持つことができるようにしたいです:

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

私はシェルスクリプトを書くのは初めてで、これを達成する方法を理解することはできません。

19
anonuser0428

できるよ:

# 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
33
anubhava

ソリューションは、配列を生成するために機能します。 whileループを使用する代わりに、forループを使用します。

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