内部字段分隔符,是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