从目录 KSH Unix 获取文件名



好的,我大约一周前问了一个问题,得到了一个有效但不能解决我问题的回复。我是KSH的新手。一个好的解释也会有所帮助,我宁愿有一个起点或开始阅读的地方,而不是已经写了代码。:)我希望成品看起来像这样:

iter = 1
do
   while fileExistsInDir==true
   $arr[$iter] = filename
    iter++
    done
 #do something with the array

在我之前的问题中,我被告知要这样做

set --*
[#$var -gt 0]&&{
 echo $1 
}

这有效,但我必须保持 1 美元的增量,即 2 美元、3 美元、4 美元等。我希望它保持静态并更改每个文件的值。有没有更简单的方法可以做到这一点。到目前为止,我在 Stack 上看到的所有内容要么需要依赖项,要么似乎不起作用。

将当前目录中的所有文件放入数组中非常简单:

$ arr=(*)
$ echo "${arr[@]}"

*称为 glob 构造,但大多数人称其为通配符。 它的意思是"当前目录中零个或多个字符的文件名"(即所有字符)。 我假设是相对较新的 ksh 版本。 多年来,Korn shell 中的阵列处理发生了变化。

set -- *行将当前目录中的所有文件分解为位置参数。

您可以使用以下命令遍历所有位置参数

for file in "$@"; do
    echo "$file"
done

最新更新