内部字段分隔符,是shell脚本中一个相当重要的概念,在处理文本的时候,相当的有用,我们需要将数据流划分为不同的数据元素的定界符,内部字段分隔符就是用于同字段的定界符,IFS是存储定界符的环境变量,也是shell环境使用的默认定界字符串

假如我们需要迭代一个字符串或者CSV类型的单词,如何使用IFS来进行分割

假如是一个CSV的数据

data=”name,sex,rollno.location”;

oldIFS=$IFS

IFS=,

for item in $data

do

echo Item: $Item

done

IFS=$oldIFS

图片

获得如下的输出

IFS的默认值为一个空白字符串

当IFS被设置为了逗号的时候,shell将逗号认为是定界符,这样$item在读取定界符的时候,会将逗号分割的字符串作为变量值

那么如果没有设置IFS,那么字符串不会被分割掉

下面也是在利用IFS分割字符串后,进行循环的结果

图片

输出为 图片

接下来再来说下shell中的循环

1.for循环

for var in list

do

commands

done

list can be a string or a sequence

或者利用序列来进行for循环

{1..50}

{a..z}

{A..Z}

在这个序列之中,我们可以进行结合,保证使用for循环

for i in {a..z};

do

action;

done;

for循环还有着C语言之中for循环的格式,比如

for((i=0;i<10;i++))

{

commands;

}

2.while循环

while condition

do

commands;

done

condition为true可以表示无限循环

3.until循环

Bash中的特殊循环 until.会一直执行循环到给定的条件为帧

x=0

until [ $x -eq 9 ] #后面的[]内的为循环条件

do let x++;

echo x;

done

发表评论

邮箱地址不会被公开。 必填项已用*标注