微前端架构如何改变企业的开发模式与效率提升
576
2022-09-26
1.16字段分隔符和迭代器
内部字段分隔符(Internal Field Separator,IFS)是shell脚本编程的一个重要概念。下面将讨论把单个数据流划分成不同数据元素的定界符(delimiter),内部字段分隔符是用于特定用途的定界符。IFS是存储定界符的环境变量。它是当前shell环境默认使用的默认定界字符串。
1、考虑一种情形,我们需要迭代一个字符串或逗号分隔型数值(Comma Separated Value,CSV)中的单词。如果是前一种,则使用IFS=".";如果是后一种,则使用IFS=","。如下
考虑CSV数据的情形:
data="name,sex,rollno,location"
我们可以使用IFS读取变量中的每一个条目。
oldIFS=$IFSIFS=, #now IFS为,for item in $data;do echo Item: $itemdoneIFS=$oldIFS
IFS的默认值为空白符(换行符、制表符或者空格)
2、在文件/etc/passwd中,每一行包含了由冒号分隔的多个条目。文件中的每行都对应一位用户的相关属性。
考虑这样的输入:root:x:0:0:root:/root:/bin/bash。每行的最后一项指定了用户的默认shell。利用IFS打印出用户以及他们对应的默认shell:
#!/bin/bash#演示IFS的用法line="root:x:0:0:root:/root:/bin/bash"oldIFS=$IFS;IFS=":";count=0for item in $linedo [ $count -eq 0 ] && user=$item; [ $count -eq 6] && shell=$item; let count++;done;IFS=$oldIFSecho $user\'s shell is $shell;
输出为
root's shell is /bin/bash
对一些列值进行迭代时,循环非常有用;
for 循环for var in list;do commands;#使用变量$vardone
list 可以是一个字符串,也可以是一个序列。
echo {1..50}能够生成一个从1~50的数字列表。同理echo {a..z}或{A..Z}或{a..h}可以生成子母表。
变量i在每次迭代的过程中都会保存一个字符,范围从a~z;
for i in {a..z};do actions;done;for循环也可以采用C语言的for格式:for(i=0;i<10;i++) commands;#使用变量$iwhile循环while condition do commands; done
用true作为循环条件能够产生无限循环。
until循环
在bash中还可以使用一个特殊的循环until。它会一直执行循环,直到给定的条件为真。
如
x=0;until [ $x -eq 9 ];#条件是[ $x -eq 9 ]do let x++; echo $x;done
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~