如何熟悉Bash的循环for?

Bash

1 基础知识

– bash的for是经常用到的循环,本章用于记录for的使用方法
– 由于for循环使用方法众多,本章会不断收集和更新

2 最佳实践

2.1 迭代对象

2.1.1 迭代字符串

for i in abc def ghi; do
    echo "$i";
done

以上默认以空格为字符串的分割符号,常见的是你可以配合变量使用,

str="abc def ghi"
for i in $str; do
    echo "$i";
done

2.1.2 迭代文件列表

for i in `ls /tmp/`; do
    echo "$i";
done

另外,由于文件夹名称或文件可能包含空格(空格默认为换行符),所以迭代文件名最好指定回车为换行符,

IFS=$'\n'
for i in `ls /tmp/`; do
    echo "$i";
done

2.1.3 迭代数字范围

for i in {1..5}; do
    echo "$i";
done

2.1.4 迭代数组

array=('abc' 'def' 'ghi')
for i in "${array[@]}"; do
    echo "$i";
done

2.2 计数器

2.2.1 递增计数

for ((i=0; i<=10; i++)); do
    echo "$i";
done

另外,可以指定递增步长,

for i in $(seq 10 +10 30); do
    echo "$i";
done

2.2.2 递减计数

for ((i=10; i>=0; i--)); do
    echo "$i";
done

另外,可以指定递减步长,

for i in $(seq 30 -10 10); do
    echo "$i";
done

2.2.3 无限计数

for ((;;)); do
    echo "infinite loops [ hit CTRL+C to stop]"
done

2.3 跳出循环

2.3.1 单次跳出循环

for ((i=0; i<=10; i++)); do
    if [ $i == 5 ]; then
        continue
    fi
    echo "$i";
done

2.3.2 终止循环

for ((i=0; i<=10; i++)); do
    if [ $i == 5 ]; then
        break
    fi
    echo "$i";
done

参阅文档
=================
https://www.cyberciti.biz/faq/bash-for-loop/

没有评论

发表回复

Bash
如何实现文件夹路径转纯数字符串?

1 前言 一个问题,一篇文章,一出故事。 由于由于需要设置某目录的配额,配额要求为每个目录指定一个项 …

Bash
如何统计Linux打开文件前10进程?

1 前言 一个问题,一篇文章,一出故事。 笔者生产环境有台服务最近压力比较大,打开的文件数量不断地往 …

Bash
如何获取VSFTP昨天活跃和有效用户?

1 前言 一个问题,一篇文章,一出故事。 笔者生产环境有台老旧的FTP服务器,用户众多。笔者希望每天 …