【发布时间】:2016-08-16 10:29:43
【问题描述】:
我正在尝试遍历目录中的文件名,以便对每个文件名执行操作。
如果我使用,我只能遍历 10 个文件名:
var=($(ls directory))
for k in {1..10}
do
echo ${var[$k]}
done
这给了我目录中的前 10 个文件名。但是,我想遍历它们。
如果我这样做:
length=($(ls directory -1 | wc -l))
我得到了长度(对于这个例子,它是 62)
所以当我把所有东西结合在一起时:
var=($(ls directory))
length=($(ls directory -1 | wc -l))
for k in {1..$length}
do
echo ${var[$k]}
done
我收到错误“语法错误:预期操作数(错误标记为“{1..62}”)
任何解决此问题的帮助或更好的解决方案将不胜感激!
【问题讨论】:
-
Brace expansion 既强大又有限。请注意,它发生在任何变量展开之前,因此任何使用
{1..$length}的尝试都注定要失败。
标签: bash list loops directory names