1.16 字段分隔符和迭代器

2019-03-05  本文已影响0人  拙言_Coder

《Linux Shell 脚本攻略(第 2 版)》读书笔记

字段分隔符

内部字段分隔符(Internal Field Seprator,IFS),是当前shell环境使用的默认定界字符串。对于 IFS 的定义如下:

The Internal Field Separator that is used for word splitting after expansion and to split lines into words with the read builtin command. The default value is <space><tab><new-line>.

IFS 的作用如下:

以上几点参考了网上的这篇文章《详细解析Shell中的IFS变量》

查看 IFS 的默认值

$ echo -n "$IFS" | hexdump
0000000 20 09 0a    #0x20, 0x09和0x0a分别对应于空格(space), 水平制表符(tab)和换行符(newline)的值
0000003 

演示 IFS 的用法

#!/bin/bash

line="root:x:0:0:root:/root:/bin/bash"
oldIFS=$IFS
IFS=":"
count=0

for item in $line; do
  [ $count -eq 0 ] && user=$item;
  [ $count -eq 6 ] && shell=$item;
  let count++
done

IFS=$oldIFS
echo $user\'s shell is $shell

输出:

root's shell is /bin/bash

迭代器

for 循环

for…in

for var in list; do #list可以是一个字符串,也可以是一个序列(如:{a..z})
    #循环体
done

C 风格 for 循环

for((i=0;i<10;i++)) {
    #循环体
}

while 循环

while condition; do #condition为真,则进入循环;否则退出
    #循环体
done

until 循环

x=0;
until [ $x -eq 9 ]; do #x的值等于9时退出循环
    let x++; echo $x;
done
上一篇 下一篇

猜你喜欢

热点阅读