shell中字分隔的妙用:变量IFS
shell把每个 $IFS 字符对待成一个分隔符,且基于这些字符把其他扩展的结果分割。如果 IFS 未设置,或者它的值正好是 “‘<space><tab><newline>’”,那么任何IFS 字符的序列就送往分割字。
自写一个简单的脚本:
#!/bin/bash
for i in `cat /etc/passwd`
do
echo $i
done
输出结果:
test33:x:506:100::/home/test33:/bin/bash
test44:x:507:512::/home/test44:/bin/bash
test55:x:508:100::/home/test55:/bin/bash
test66:x:509:100::/home/test66:/bin/bash
假如/etc/passwd中有第五列,即注释,恰恰注释中包含空格,如下:
test33:x:506:100::/home/test33:/bin/bash
test44:x:507:512::/home/test44:/bin/bash
test55:x:508:100::/home/test55:/bin/bash
test66:x:509:100:user test1:/home/test66:/bin/bash
执行的结果是什么呢,乱了:
test33:x:506:100::/home/test33:/bin/bash
test44:x:507:512::/home/test44:/bin/bash
test55:x:508:100::/home/test55:/bin/bash
test66:x:509:100:user
test1:/home/test66:/bin/bash
程序把注释中的空格看作字分隔符了。为了解决这一问题,可用$IFS变量:
#!/bin/bash
IFS_old=$IFS #将原IFS值保存,以便用完后恢复
IFS=$’\n’ #更改IFS值为$’\n’ ,注意,以回车做为分隔符,IFS必须为:$’\n’
for i in `cat m.txt`
do
echo $i
done
IFS=$IFS_old #恢复原IFS值
再次运行,得到预期结果:
test33:x:506:100::/home/test33:/bin/bash
test44:x:507:512::/home/test44:/bin/bash
test55:x:508:100::/home/test55:/bin/bash
test66:x:509:100:user test1:/home/test66:/bin/bash
转载于:https://blog.51cto.com/12778799/1958094
shell中字分隔的妙用:变量IFS相关推荐
- shell中文件路径用变量定义_环境变量
环境变量可以使得 bash shell 存储有关 shell 会话和工作环境的信息,允许在内存中存储数据. 在 bash shell 中,环境变量分为: 全局变量 局部变量 全局变量对 shell 会 ...
- shell编程(三) : [Linux基础] Linux 环境变量
接上一篇文章Linux shell编程(二): Linux shell基础 2.3 Linux环境变量 bash shell用一个叫作环境变量(environment variable)的特性来存储有 ...
- 在shell中常用的特殊符号
在shell中常用的特殊符号罗列如下: # ; ;; . , / \\ 'string'| ! $ ${} $? $$ $* \"string\"* ** ...
- shell实例第22讲:shell中分隔符IFS用法
shell中分隔符IFS用法 1.什么是IFS? IFS在shell中是分隔符的意思,即IFS这个变量中存放了分隔符. 2.IFS是全局变量还是局部变量? (1)linux中变量分两种:全局变量env ...
- 【CentOS 7Shell编程4】,shell中的case判断#180208
2019独角兽企业重金招聘Python工程师标准>>> hellopasswd shell中的case判断 格式case 变量名in value1) command ;; value ...
- shell 中的export作用(转载)
接触BASH的export是将自定义变量变成系统环境变量):我在一个脚本文件中定义一个了变量,然后echo显示出它的值,可结果却不是这样,脚本执行完后用source+脚本文件就可以了,我试了一下果然可 ...
- linux if 判断文件,shell中的逻辑判断,if 判断文件、目录属性,if判断的一些特殊用法...
格式1:if 条件 ; then 语句; fi //如果满足条件,然后执行语句 [root@akuilinux01 shell]# cat if1.sh #!/bin/bash a=5 if [ $a ...
- shell中 的 export命令
export 功能说明:设置或显示环境变量. 语 法:export [-fnp][变量名称]=[变量设置值] 补充说明:在shell中执行程序时,shell会提供一组环境变量.export可新增,修改 ...
- shell中$的作用
shell中使用$符号来取一个变量的值,常见的就是$VAR或者${VAR},为了搞懂其它$#,$@,$0,$1,$2,$*,$$,$?的意义,我们可以写一个测试脚本运行下: #! /bin/bashV ...
最新文章
- IC/FPGA笔试/面试题分析(九)关于FIFO最小深度计算的问题
- ubuntu16.04右键没有终端的问题
- 3D打印材料PLA,ABS对比
- 2013-3-14 生活日记
- C++未定义行为-数组越界
- 监督学习 | SVM 之非线性支持向量机原理
- Centos7默认自带了Python2.7版本,但是因为项目需要使用Python3.x,这里提供一种比较快捷方便的安装方式...
- 车牌识别算法介绍与实践(转)
- 第四周课程总结实验报告二
- java包装类collection,java包装类的比较、hash和CollectionUtils交集原理探究
- 【Codeforces gym 102388】SUFE ICPC Team Formation Test,签到题BDG
- Python数据挖掘-关键字提取
- mysql对本地文件的读取_MySQL之文件读取
- C - Catch That Cow POJ - 3278(广搜)
- 清楚理解const_cast类型转换
- 数据分析之A股市场技术分析是否可行
- jmp连mysql_mongo connect BI 连接至Power BI
- 微信表白神秘代码!快发给ta!
- Arcgis用矢量文件裁剪栅格图像
- java咖啡是研磨的吗_咖啡的研磨程度,真的很重要吗?
热门文章
- java protected关键字_Java 权限protected关键字纠正
- delphi打印html文件路径,Delphi获取文件名、不带扩展名文件名、文件所在路径、上级文件夹路径的方法...
- 同一个网络中为什么有些计算机可以连接共享打印机,有些需要输入密码,安装局域网共享打印机时,要求输入用户和密码,但对方并没有设置,为什么?谢谢!!...
- Java常用API例子_Java常用API及Math类
- GPU Gems1 - 11 阴影贴图反走样
- ZOJ 3735 Josephina and RPG
- Servlet 与 Ajax 交互一直报status=parsererror
- JAVA-容器(2)-Collection
- Oracle 数据库字典 sys.obj$ 表中关于type#的解释
- 大话设计模式之策略模式