从目录KSH Unix获取文件名

时间:2016-04-25 18:19:17

标签: shell unix ksh

好的,我在一周前问了一个问题并得到了一个有效但无法解决问题的回复。我是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美元等等。我希望保持静态并更改每个文件的值。有没有更简单的方法来做到这一点。到目前为止我在堆栈上看到的所有东西都需要依赖或者似乎不起作用。

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:2)

set -- *将当前目录中的所有文件全局化为位置参数。

您可以使用

循环遍历所有位置参数
for file in "$@"; do
    echo "$file"
done