Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 从目录KSH Unix获取文件名_Shell_Unix_Ksh - Fatal编程技术网

Shell 从目录KSH Unix获取文件名

Shell 从目录KSH Unix获取文件名,shell,unix,ksh,Shell,Unix,Ksh,好的,大约一周前我问了一个问题,得到的回答是有效的,但不能解决我的问题。我是KSH的新手。另外,一个好的解释也会有帮助,我宁愿有一个起点或某个地方开始阅读,而不是已经编写了代码。:)我希望成品看起来像这样: iter = 1 do while fileExistsInDir==true $arr[$iter] = filename iter++ done #do something with the array 在我之前的问题中,我被告知要这样做 set --*

好的,大约一周前我问了一个问题,得到的回答是有效的,但不能解决我的问题。我是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美元等等。我希望它保持静态并更改每个文件的值。有没有更简单的方法。到目前为止,我在堆栈上看到的所有内容要么需要依赖项,要么似乎不起作用

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

可以使用循环遍历所有位置参数

for file in "$@"; do
    echo "$file"
done
set--*
将当前目录中的所有文件全局放到位置参数中

可以使用循环遍历所有位置参数

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

要将当前目录中的所有文件放入数组非常容易:

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

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

要将当前目录中的所有文件都放到一个数组中非常简单:

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

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

所以您只需要一个数字索引数组来保存当前目录中的文件名?使用空格,记住它们通常是重要的。所以你只需要一个数字索引数组来保存当前目录中的文件名?使用空格时,请记住它们通常是重要的。“$@”中的
部分是可选的,默认值是@cdarke同意的。通常情况下,我会不使用它,但在这种情况下,我认为增加的特异性对于通过
set--
设置位置参数的特定设置是有用的。(虽然如果我说,
$@
是位置参数的数组,它会更有用。)谢谢,这解释得更好。这是执行此过程的最佳方法吗?“$@”
中的
部分是可选的,默认部分是默认的。@cdarke同意。通常情况下,我会不使用它,但在这种情况下,我认为增加的特异性对于通过
set--
设置位置参数的特定设置是有用的。(虽然如果我说,
$@
是位置参数的数组,它会更有用。)谢谢,这解释得更好。这是完成这个过程的最好方法吗?这比我现在使用的集合更好吗?它更简单,简单是好的。有些人在使用
set
时有问题-我没有。
set
有一些模糊的问题,但是在方法之间没有太多选择。当您使用不带数组的shell时,则需要使用
set
。使用
set
的问题在于,它会将脚本/函数收到的任何位置参数吹走,因此如果您仍然需要这些参数,则会出现问题。如果您有数组,则可以选择使用
set
,但使用数组也可以(而且您可以使用更多的数组)。良好的做法是将位置参数指定给脚本开头附近的命名参数(变量),因此使用
set
覆盖这些参数不应该是问题。这是专门的Korn shell,但是ksh88需要不同的语法。感谢您提供的信息,它帮助我更好地理解这一点。这比我现在使用集合所做的更好吗?它更简单,也更简单。有些人在使用
set
时有问题-我没有。
set
有一些模糊的问题,但是在方法之间没有太多选择。当您使用不带数组的shell时,则需要使用
set
。使用
set
的问题在于,它会将脚本/函数收到的任何位置参数吹走,因此如果您仍然需要这些参数,则会出现问题。如果您有数组,则可以选择使用
set
,但使用数组也可以(而且您可以使用更多的数组)。良好的做法是将位置参数指定给脚本开头附近的命名参数(变量),因此使用
set
覆盖这些参数不应该是问题。这是专门的Korn shell,但是ksh88需要不同的语法。感谢您提供的信息,它帮助我更好地理解这一点