只做一次循环5次

时间:2011-12-31 22:40:10

标签: bash shell unix loops

我想做一个循环(for file in *)只有5次(所以它不再是一个真正的循环,但是)无论如何都要这样做吗?

4 个答案:

答案 0 :(得分:5)

将文件放入数组中,然后对数组进行切片。

$ files=(*)
$ for file in "${files[@]::5}" ; do echo "$file" ; done
あいうえお
0000000000-11-005978.txt
0000000000-11-020832.txt
1
,123

答案 1 :(得分:1)

这只会查看目录中的前五项:

for file in $(ls | head -5)

正如Ignacio Vazquez-Abrams指出的那样,只有当你的文件名不包含任何空格时,这才有效。 (他们可能不会,但要记住一些事情。)

答案 2 :(得分:1)

假设变量i未定义或输入循环时为0且未在循环中使用,只需添加以下行:

test $((++i)) -ge 5 && break

在循环体中。循环将在第5次迭代期间中断,因此如果将行放在循环体的末尾,则命令将执行5次。如果你的shell支持它,你也可以使用不太便携的

((++i >= 5)) && break

答案 3 :(得分:0)

这是另一种解决方案,它只使用bash而不使用外部工具:

let COUNT=0
for FILENAME in *
do
    echo do something to $FILENAME
    let COUNT=COUNT+1
    if (( $COUNT == "5" )); then
        break
    fi
done