for循环语句 for-do-done

  • Post author:
  • Post category:其他




1. 定义

关键字:遍历



2. 语法


语法一:

for var in list
do
	commands
done


语法二:

for var in list;do
	commands
done


语法三(C语言风格):

for ((i=0;i<10;i++))
do
	commands
done

注:取值列表有多种取值方式,比如:

1)可以直接读取in后面的值,默认以空格分隔

2)列表中的复杂值,可以使用 引号或转义符号”/”加以约束



3. 执行流程描述

在这里插入图片描述

各个被遍历的值之间用空格分开



4. 示例




4.1 读取in后面的值,默认以空格分隔


代码示例

#!/bin/bash

for var in a1 b1 c1 d1
do
	echo "this is $var"
done

#!/bin/bash

for var in a1 b1 c1 d1;do
	echo "this is $var"
done


执行结果


在这里插入图片描述




4.2 读取in后面值,使用 引号加以约束


代码示例

#!/bin/bash
for var in a1 a2 "c1 d1" e2 "hello world"
do
	echo "this is $var"
done


执行结果


在这里插入图片描述




4.3 读取in后面的值,特殊符号使用转义符”/”加以约束


代码示例

#!/bin/bash
for var in a1 b\'1 'c1 d1' e2 'hello world' it\'s a22
do
	echo "this is $var"
done


执行结果


在这里插入图片描述




4.4 从变量中取值

即提前定义列表变量


代码示例

#!/bin/bash
lst="a1 b1 c1 d1"
for var in $lst
do
	echo "this is $var"
done


执行结果


在这里插入图片描述




4.5 从命令中取值


代码示例

#!/bin/bash
for i in `cat ./test.txt`
do
	echo $i
done


执行结果


在这里插入图片描述

由上述结果可以看出,输出结构是以

空格

为默认分隔符的,那么如何自定义分隔符呢?




4.6 自定义shell分隔符

默认情况下,bash shell 会以空格、制表符、换行符作为分隔符。通过

IFS

来自定义为分隔符


指定单个字符做分隔符:



IFS=:

# 以

:

冒号作为分隔符


指定多个字符做分隔符:



IFS='\n':;'

#定义

反斜杠



n



冒号



分号



双引号

作为字段分隔符


注: $’\n’ 和’\n’ 的区别


IFS='\n'

# 将字符 \ 和字符 n 作为IFS的换行符


IFS=$'\n'

# 将真正的换行符作为字段分隔符


代码示例

#!/bin/bash
IFS=$'\n'
for i in `cat ./test.txt`
do
	echo $i
done


执行结果


在这里插入图片描述

由上面执行结果可以看出,目前是以换行符作为了分隔符




4.7 C语言风格的for




1) 示例一


代码示例

#!/bin/bash
for ((i=0;i<10;i++))
do
	echo "num is $i"
done


执行结果


在这里插入图片描述




示例二

多个变量,同时输出1-9的升序和降序


代码示例

#!/bin/bash
for ((a=1,b=9;a<10;a++,b--))
do
	echo "num is $a -- $b"
done


执行结果


在这里插入图片描述



版权声明:本文为qq_31851107原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。