Shell中IFS用法

一 、IFS的介绍

Shell 脚本中有个变量叫IFS(Internal Field Seprator) ,内部域分隔符。完整定义是The shell uses the value stored in IFS, which is the space, tab, and newline characters by default, to delimit words for the read and set commands, when parsing output from command substitution, and when performing variable substitution.

Shell 的环境变量分为set, env 两种,其中 set 变量可以通过 export 工具导入到 env 变量中。其中,set 是显示设置shell变量,仅在本 shell 中有效;env 是显示设置用户环境变量 ,仅在当前会话中有效。换句话说,set 变量里包含了env 变量,但set变量不一定都是env 变量。这两种变量不同之处在于变量的作用域不同。显然,env 变量的作用域要大些,它可以在 subshell 中使用。

IFS 是一种 set 变量,当 shell 处理"命令替换"和"参数替换"时,shell 根据 IFS 的值,默认是 space, tab, newline 来拆解读入的变量,然后对特殊字符进行处理,最后重新组合赋值给该变量。

二、 IFS的简单实例

1 查看IFS的值

echo "$IFS"

echo "$IFS"|od -b

0000000 040 011 012 012

0000004

直接输出IFS是看不到值的,转化为二进制就可以看到了,"040"是空格,"011"是Tab,"012"是换行符"\n" 。最后一个 012 是因为 echo 默认是会换行的。

2 实际中的应用

#!/bin/bash

OLD_IFS=$IFS #保存原始值

IFS="" #改变IFS的值

...

...

IFS=$OLD_IFS #还原IFS的原始值

时间: 2024-10-06 18:54:17

Shell中IFS用法的相关文章

【转】shell中IFS用法

http://blog.itpub.net/27181165/viewspace-775820/ 一 IFS的介绍   Shell 脚本中有个变量叫IFS(Internal Field Seprator) ,内部域分隔符.完整定义是The shell uses the value stored in IFS, which is the space, tab, and newline characters by default, to delimit words for the read and

shell中sed用法

简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有 改变,除非你使用重定向存储输出.Sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等. sed使用参数 [[email protected] ~]# sed [-nefr] [动作] 选项与参数: -n

shell中awk用法

简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. awk有3个不同版本: awk.nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本. awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母.实际上 AWK

shell中${}的用法

以下的内容基本从Shell13问中提取.1. 截断功能${file#*/}:       拿掉第一条/及其左边的字符串:dir1/dir2/dir3/my.file.txt${file##*/}:    拿掉最后一条/及其左边的字符串:my.file.txt${file#*.}:       拿掉第一个.及其左边的字符串:file.txt${file##*.}:    拿掉最后一个.及其左边的字符串:txt${file%/*}:     拿掉最后条/及其右边的字符串:/dir1/dir2/dir

信号捕捉trap及其在shell中的用法

kll -l命令可以查看所有的信号 其中有几个最常用的信号值如下 tarp的用法(注意,使用的是单引号) 例如 #!/bin/bash trap 'echo "good"' 2 这里可以使用数字编号,也可使用信号名或简称 sleep 100 当上面这个脚本运行时,如果我们a 原文地址:https://blog.51cto.com/14240018/2432269

linux shell中split用法

[[email protected] ~]# split [-bl] file PREFIX 参数: -b  :后面可接欲分割成的档案大小,可加单位,例如 b, k, m 等: -l  :以行数来进行分割. 范例: 范例一:我的 /etc/termcap 有七百多K,若想要分成 300K 一个档案时? [[email protected] ~]# cd /tmp; split -b 300k /etc/termcap termcap [[email protected] tmp]# ls -l

linux shell中$的用法

以下列举了$的常用方法 $n        表示传递给脚本的参数,$1表示第一个,$2表示第二个- $#        表示传递给脚本的参数个数 $0         表示脚本的名字. $?         表示上一次命令的退出状态,成功为0,否则为1 $$        表示当前程序进程的ID号 $!         表示上次程序进程的ID号 [email protected]       传递给脚本的所有参数 举例说明: [email protected]:~$ vi 1.sh #!usr/

shell中判断用法

测试结构: 测试命令可用于测试表达式条件的真假,true,则返回0,false,则返回非0:这一点c/c++有区别:       格式: test  expression #expression是一个表达式,该表达式可由数字.字符串.文本和文件属性的比较:同时可加入各种算术.字符串.文本运算符等: [  expression  ] #其中“ [ ” 是启动测试的命令,但要求在expression后要一个“ ] ”与其配对,特别注意“ [ ”和“ ] ”前的空格必不可少的. #该方式经常与if.

linux bash shell中for的用法and示例

关于linux bash shell中的for语句 在linux中shell是必不可少的一部分,但是在bash shell中有while,for,until等循环命令,今天就介绍一下关于for的一些用法.文中任何错误希望大佬们一一指出,不胜感激. bash shell中提供了for命令,用于创建通过一系列值重复的循环,每次重复使用系列中的一个值执行一个定义的命令集. for语句的基本格式如下: for---in list do commands done 在参数list中提供一系列用于迭代(上一