linux中分隔符IFS
在linux中IFS是分隔符的意思,linux中变量分两种,全局变量env和局部变量set,set中包含了env的全部变量,我们查看IFS的值发现env | grep IFS为空,而set | grep IFS有值,说明IFS是局部变量,
gl@gl:~$ set | grep ^IFS
IFS=$' \t\n'
从上面可以看出,IFS是已空格、制表符、换行符来进行分隔的。
脚本1:
#!/bin/bash
IFS=","
str="a,b,c,d,e,f,g"
echo $str
for i in $str
doecho $i
done
运行结果:
gl@gl:~$ ./tmp
a b c d e f g
a
b
c
d
e
f
g
对于非特殊的分隔符,以下三种是等价的
IFS=","
IFS=$","
IFS=$','
介绍 IFS 、$ 、单双引号
IFS默认值是空格、制表符和换行符,此处以换行符\n来讨论,IFS='\n',IFS=$"\n",IFS=$'\n',第一个和第二个是等价的,就是普通字符反斜杠和n,第三个是一个先转换为了回车符NL,在屏幕上直接就回车了。
对于特殊字符
gl@gl:~$ echo "\n"
\n
gl@gl:~$ echo $"\n"
\n
gl@gl:~$ echo $'\n'gl@gl:~$
脚本2:
gl@gl:~/gl/shell/input$ cat text
#!/bin/bash
IFS="\n"
#IFS=$"\n"
#IFS=$'\n'
str="a\nb\nc\nd\\n"
echo $str
for i in $str
doecho $i
done
echo "===================="
str2="anbncndn"
echo $str2
for j in $str2
doecho $j
done
结果是:
gl@gl:~$ ./text
a b c d
abcd====================
a b c d
a
b
c
d
调试为:
gl@gl:~$ bash -x text
+ IFS='\n'
+ str='a\nb\nc\nd\n'
+ echo a '' b '' c '' d ''
a b c d
+ for i in $str
+ echo a
a
+ for i in $str
+ echo+ for i in $str
+ echo b
b
+ for i in $str
+ echo+ for i in $str
+ echo c
c
+ for i in $str
+ echo+ for i in $str
+ echo d
d
+ for i in $str
+ echo+ echo ====================
====================
+ str2=anbncndn
+ echo a b c d
a b c d
+ for j in $str2
+ echo a
a
+ for j in $str2
+ echo b
b
+ for j in $str2
+ echo c
c
+ for j in $str2
+ echo d
d
脚本3:
#!/bin/bash
#IFS="\n"
IFS=$"\n"
#IFS=$'\n'
str="a\nb\nc\nd\\n"
echo $str
for i in $str
doecho $i
done
echo "===================="
str2="anbncndn"
echo $str2
for j in $str2
doecho $j
done
结果是:
gl@gl:~$ ./text
a b c d
abcd====================
a b c d
a
b
c
d
调试为:
gl@gl:~$ bash -x ./text
+ IFS='\n'
+ str='a\nb\nc\nd\n'
+ echo a '' b '' c '' d ''
a b c d
+ for i in $str
+ echo a
a
+ for i in $str
+ echo+ for i in $str
+ echo b
b
+ for i in $str
+ echo+ for i in $str
+ echo c
c
+ for i in $str
+ echo+ for i in $str
+ echo d
d
+ for i in $str
+ echo+ echo ====================
====================
+ str2=anbncndn
+ echo a b c d
a b c d
+ for j in $str2
+ echo a
a
+ for j in $str2
+ echo b
b
+ for j in $str2
+ echo c
c
+ for j in $str2
+ echo d
d
脚本4:
#!/bin/bash
#IFS="\n"
#IFS=$"\n"
IFS=$'\n'
str="a\nb\nc\nd\n"
echo $str
for i in $str
doecho $i
done
echo "===================="
str2="anbncndn"
echo $str2
for j in $str2
doecho $j
done
结果是:
gl@gl:~$ ./text
a\nb\nc\nd\n
a\nb\nc\nd\n
====================
anbncndn
anbncndn
调试为:
gl@gl:~$ bash -x ./text
+ IFS='
'
+ str='a\nb\nc\nd\n'
+ echo 'a\nb\nc\nd\n'
a\nb\nc\nd\n
+ for i in $str
+ echo 'a\nb\nc\nd\n'
a\nb\nc\nd\n
+ echo ====================
====================
+ str2=anbncndn
+ echo anbncndn
anbncndn
+ for j in $str2
+ echo anbncndn
anbncndn
脚本5:
#!/bin/bash
IFS="&"
str="a&&b&&c&&d"
echo $str
for i in $str
doecho $i
done
结果是:
gl@gl:~$ ./text2
a b c d
abcd
调试为:
gl@gl:~$ bash -x ./text2
+ IFS='&'
+ str='a&&b&&c&&d'
+ echo a '' b '' c '' d
a b c d
+ for i in $str
+ echo a
a
+ for i in $str
+ echo+ for i in $str
+ echo b
b
+ for i in $str
+ echo+ for i in $str
+ echo c
c
+ for i in $str
+ echo+ for i in $str
+ echo d
d
脚本6:
#!/bin/bash
IFS=$' '
str="a b c d"
echo $str
for i in $str
doecho $i
done
结果是:
gl@gl:~$ ./text3
a b c d
a
b
c
d
调试为:
gl@gl:~$ bash -x ./text3
+ IFS=' '
+ str='a b c d'
+ echo a b c d
a b c d
+ for i in $str
+ echo a
a
+ for i in $str
+ echo b
b
+ for i in $str
+ echo c
c
+ for i in $str
+ echo d
d
脚本7:
#!/bin/bash
IFS="\n"
#IFS=$"\n"
#IFS=$'\n'
str="ab
d"
echo $str
for i in $str
doecho $i
done
结果是:
gl@gl:~$ ./text4
ab
d
ab
d
调试为:
gl@gl:~$ bash -x ./text4
+ IFS='\n'
+ str='ab
d'
+ echo 'ab
d'
ab
d
+ for i in $str
+ echo 'ab
d'
ab
d
脚本8:
#!/bin/bash
#IFS="\n"
IFS=$"\n"
#IFS=$'\n'
str="ab
d"
echo $str
for i in $str
doecho $i
done
结果是:
gl@gl:~$ ./text4
ab
d
ab
d
调试为:
gl@gl:~$ bash -x ./text4
+ IFS='\n'
+ str='ab
d'
+ echo 'ab
d'
ab
d
+ for i in $str
+ echo 'ab
d'
ab
d
脚本9:
#!/bin/bash
#IFS="\n"
#IFS=$"\n"
IFS=$'\n'
str="ab
d"
echo $str
for i in $str
doecho $i
done
结果是:
gl@gl:~$ ./text4
ab d
ab
d
调试为:
gl@gl:~$ bash -x ./text4
+ IFS='
'
+ str='ab
d'
+ echo ab d
ab d
+ for i in $str
+ echo ab
ab
+ for i in $str
+ echo d
d
1. IFS="\n"和IFS=$"\n"等价,都是以反斜杠\ 和 英文字母n为分隔符,IFS=$'\n'则是以转化后的换行(即为按住Enter键的效果)为分隔符
2.出现多个空格并列为一个空格,多个除空格外的换行符并列出现时,如IFS="\n";str1="a\nb\nc" 或 IFS="&";str2="a&&b&&c" ,此时换行符\和字母n都作为str1的分隔符,&作为str2的换行符,则连续的两个换行符中间会出现一个空字符'',如上面脚本示例中的调试代码中出现的 ''
3. IFS="\n"和IFS=$"\n"都是表示反斜杠\ 和 英文字母n为分隔符,和按住Enter键的效果不是一回事,IFS=$'\n'表示按住Enter键的效果
linux中分隔符IFS相关推荐
- shell实例第22讲:shell中分隔符IFS用法
shell中分隔符IFS用法 1.什么是IFS? IFS在shell中是分隔符的意思,即IFS这个变量中存放了分隔符. 2.IFS是全局变量还是局部变量? (1)linux中变量分两种:全局变量env ...
- linux文本分割符怎么显示,Linux自定义分隔符IFS引发的文本处理问题
需求是检查指定应用的某些配置所以就写了个脚本,数据文件的内容是这样的:应用名称|IP|端口 多个IP用空格,这样可以生成数组.这个文件的数据是通过部署平台的API获取后自己组装的. #!/bin ...
- notepad++ 分隔符SOH,在Linux中具体的对应字符
从linux终端下载的文件用notePad++打开时看到的SOH分隔符,具体如下 有些网友说用\001可作为对应的Linux的分隔符,但是试了很多次不行. 当具体在linux中看了文件,发现其中的分隔 ...
- linux中read函数的用法,Linux中read命令的简介及使用方法
Linux中read命令的简介及使用方法 发布时间:2020-08-17 16:40:04 来源:亿速云 阅读:107 作者:小新 这篇文章给大家分享的是有关Linux中read命令的简介及使用方法的 ...
- linux中seq命令用法
用于产生从某个数到另外一个数之间的所有整数 例一: # seq 1 10 结果是1 2 3 4 5 6 7 8 9 10 例二: #!/bin/bash for i in `seq 1 10`; do ...
- Linux中_Ubuntu上_使用命令总结整理_02
文章目录 目录: 1.操作系统操作 1.Linux 基础 2.系统信息 3.系统负载 -- top 4.程序开机自启动服务配置 5.重定向_管道_流 6.终端其他命令 2.文件与目录操作 1.文件和目 ...
- linux中的for命令
bash shell提供了for命令,用于创建通过一系列值重复的循环.每次重复使用系列中的一个值执行一个定义的命令集. for命令基本格式为: for var in list do commands ...
- Linux中常见shell命令总结
1.具体的shell命令用法可以通过help或man命令进入手册来查询其具体的用法. 2.终端本质上对应着linux上的/dev/tty设备,linux的多用户登录就是通过不同的/dev/tty设备完 ...
- Linux中的简单文本处理
文本处理命令 tr命令(可以用来删除一段文本信息中的某些文字,或者将其进行转换) 格式: tr [option] - SET1 [SET2] 可选参数: -d: 删除和set1匹配的字符 -s:去除s ...
最新文章
- 什么是防火墙,真正意义上的防火墙
- JavaScript 对象中this的指向问题
- qfile 计算文件有多少行_肉牛不喂精料行吗?如何计算肉牛一天喂多少精料?
- 2 -13 作业需求
- Android 系统(228)---NITZ网络自动对时功能不起作用
- Android 系统(222)---Android 的lowmemorykiller机制
- JVM学习-类文件结构
- 查询、新增、修改、删除方法
- Linux电源管理-wakeup events framework
- 天线的布局、基本术语、种类、隔离度设计要求介绍
- 系统分析与设计-(二)系统规划
- 10月14号 - 15号 上海 IDC DX 大会
- 基于物理流体模拟(PFSPH和DFSPH)
- linux下国产达梦数据库的命令行安装
- 京东返利PHP采集关键字,PHP实现京东API的授权HASH算法
- 54、记录yolov7 训练、部署ncnn、部署mnn、部署rk3399 npu、部署openvino、部署oak vpu、部署TensorRT
- 快速生产地图瓦片解决方案:多任务切图
- 计算机怎样将多行文字转换成表格,怎么把表格里的字变成两行
- 智慧停车怎么实现的,停车场寻车是怎么实现的
- ffmpeg delogo滤镜去除图片水印