我有许多.html文件的目录myDir
。我正在尝试创建目录中所有文件的数组,以便我可以索引数组并能够引用目录中的特定html文件。我尝试过以下一行:
myFileNames=$(ls ~/myDir)
for file in $myFileNames;
#do something
但我希望能够拥有一个计数器变量,并具有如下逻辑:
while $counter>=0;
#do something to myFileNames[counter]
我对shell脚本很陌生,我无法弄清楚如何实现这一点,因此会对此事有任何帮助。
答案 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