shell中关于IFS和for的奇怪现象

代码如下:

#!/bin/sh

VAL="/aaa/bbb/ccc/ddd//@PLATFORM/eee/fff"

IFS="@PLATFORM"

for var in $VAL
do
echo "$var"
done

结果如下:
~$ sh -x ./test.sh

  • VAL=/aaa/bbb/ccc/ddd/@PLATFORM/eee/fff
  • IFS=@PLATFORM
  • for var in '$VAL'
  • echo /aaa/bbb/ccc/ddd// /aaa/bbb/ccc/ddd/
  • for var in '$VAL'
  • echo ''

  • for var in '$VAL'

  • echo ''

  • for var in '$VAL'

  • echo ''

  • for var in '$VAL'

  • echo ''

  • for var in '$VAL'

  • echo ''

  • for var in '$VAL'

  • echo ''

  • for var in '$VAL'

  • echo ''

  • for var in '$VAL'

  • echo ''

  • for var in '$VAL'

  • echo /eee/fff
    /eee/fff

理论上不应该是只输出/aaa/bbb/ccc/ddd/和/eee/fff两行吗

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
详细解析Shell中的IFS变量
题图:Photo by Jacob Postuma on Unsplash 本文原创发布于微信公众号“洛奇看世界”,一个大龄2b码农的世界 这里的Shell主要指bash,学习bash的前前后后在IFS变量上吃了不少苦头,虽然花了不少时间,也知道大概如何使用,但并没有深入理解。翻了几本Shell相关的书,对IFS也都是一带而过,并没有做详细的阐述(IFS本身在Shell里面就...
shell中的特殊变量IFS的使用,以及其值为$'\n'与'\n'时的区别。
在shell中使用到for循环时,是通过IFS同样也是来定义分隔符。如果要指定多个IFS字符,只要将他们在赋值行串起来就行。如下: IFS=$'\n':;" 这个赋值会将换行符、冒号、分号和双引号作为字段分隔符。如何使用 IFS 字符解析数据没有任何限制。 那么下面三个的区别是什么呢? IFS='\n' //将字符\和字符n作为IFS的换行符。 IFS='\n' //与
shell中的特殊变量IFS
当我越来越习惯python的编写风格时,我经常会想用bash去遍历一个文件的行,并将读取的行进行处理。 但一个诡异的情况,如果我的文本类似于这样 the first line. the second line. the third line. for line in `cat filename` do echo $line done  当我通过上面的方式遍历文件的每一行,我发现读
linux shell编程之利用环境变量IFS自定义分隔符
linux shell编程中,利用环境变量IFS自定义分隔符
SHELL中的IFS详解
在bash中IFS是内部的域分隔符,manual中对其的叙述如下: 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 
linux shell之IFS(定界符)
IFS是环境变量,默认值是空格 echo ${IFS} 修改IFS的默认值#!/bin/bash #定界符的使用IFS环境变量 echo ${IFS} oldIFS=${IFS} IFS=, VAR="name,sex,number,grade" for i in ${VAR} do echo item:${i} done IFS=${oldIFS} root@ubuntu:~# ./d
对Shell几个冷知识的总结(IFS,数组,替换,切割,查找)
IFS: 对IFS的用处直接进行说明,具体IFS是干什么的...自行谷歌 首先创建一个 "a a",和"a"的文件: 然后我们 ls查看一下: --> ls a a a是这样的。 然后假如我们需要写脚本操作每一个文件: --> for i in $(ls); do echo "$i" ;done a a a 但是结果确实这样的,显然与我们的要求不符 因为IFS的值是空格,制表符,回
linux shell之IFS分割字符串
1 问题 我们有段字符串data="chenyu:chenzixuan:chenzi",我们需要通过:分割,我们可以采用IFS 我们可以采用下面的模板 oldIFS=$IFS IFS=":" for item in $data; do ******* done IFS=$oldIFS 2 代码实现 #/bin/bash data...
shell 系统变量IFS
今天看到一个shell函数,开始不理解,后来才明白function in_path(){     cmd=$1;     path=$2;     oldIFS=$IFS     IFS=":"     retval=1     for directory in $path     do      if [ -x $directory/$cmd ];then      return 0   ...
Linux命令详解之字符串分割&&IFS
Linux命令详解之IFS 1.IFS是什么 IFS是Linux系统中默认的环境变量。指的是:interval field separator。 **The internal field separator (IFS) is an important concept in shell scripting. It is very useful while manipulating text dat...
奇怪的数学现象
奇怪的数学现象,Isum1明明和Isum2相等,但直接令其相等却找出一个等式,而令-Isum1和Isum2相加则可以证明两者相等。。。。
shell字段分隔符IFS,以逗号(,)为分隔符获取字符串内容
内部字段分隔符(Internal Field Separator, IFS)定义一个定界符,默认是空格。 #!/bin/bash function test_for { ifs_old=$IFS IFS=$',' for i in $(echo "${1}") do echo "${i}" done } test_for "test1,test2" ...
shell中各种奇怪的符号整理
各种奇怪的符号整理 () 子shell中执行 (()) 数值比较,运算,支持正则 ((i=1;i<=3;i++)) ,((commond1 && commond2)) $() 命令替换=> `commond` $(()) 支持运算 $((1+2)) {} 集合,可将命令与字符串隔开 ${Num}% ${} 变量的引用 ...
【丑帅的 Perl】奇怪的字符串
【丑帅的 Perl】奇怪的字符串 无所谓的解释 看上去很久都没有写博客了。其中有两个原因,第一是实在没有时间(无奈),第二是感觉没有碰到需要写下来的东西,今天碰到 perl 中的字符串标量,让我觉得有写下来的必要。 正文 都说 perl 丑,写出来的代码几个月后自己都不认识,在 perl 中,确实有许多奇奇怪怪的语法,比如 perl 中字符串与数字标量之间的隐式的转换。比如看下面一个例子: "2p...
跨域现象和问题
今天遇到奇怪的两个系统交互跨域问题,现象如下:   通过ajax+post请求后台数据,状态码200是成功的,方法是OPTIONS,参数里没有我提交的参数和值。这很显然不正常 正确的提交方法应该是post才对,通过在配置文件web.xml添加过滤器完美解决,直接上代码 在编码过滤器encodingFilter前面添加            SimpleCORSFilter   
解决shell读取配置文件key带点号(.)的问题
传统source读取方式 #application.properties db.uat.user=user db.uat.password=password db.uat.url=https://www.baidu.com #!/bin/sh source "application.properties" echo $db.uat.user echo $db.uat.password...
shell包含空格的文件名替换大小写
shell包含空格的文件名替换大小写 For解决,通过修改IFS: old_ifs="$IFS" ; IFS=$'\n';for i in `ls`; do mv "$i" "$(echo "$i" | sed 's/.*/\L&/g')" ; done ; IFS="$old_ifs"   while解决: ls |grep '[A-Z]'| while read i;do m..
Python中奇怪的现象
1、特殊构造的列表的元素不可以自加>>>x = [[0, 0, 0, 0]] *4 >>>x[0][0] += 1 >>>x [[1, 0, 0, 0], [1, 0, 0, 0], [1, 0, 0, 0], [1, 0, 0, 0]]上面本来是想得到[[1, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]的。 解决: 老老实实写x的初始
go 语言中奇怪的语法
1. 断言 r.(x) r.(map[string]interface{}) r.(x) 断言,然后可以用一元或二元值接收。一个参数接受的话,出错会panic。两个参数接受的话,第二个是bool,断言不成功会赋值为false。常用type switch判断interface的实体类型 2.map的 声明与遍历 var m1 map[string]string m1 = make(ma...
ExpandableListView的错误
ExpandableListView奇怪的getView现象,望大家解决
各种奇怪的javascript语法
函数前面加符号+function//A方法 +function(){console.log('xx')}; //B方法 +function(){console.log('xx')}(); //c方法 function(){console.log('xx')}; //d方法 function(){console.log('xx')}();以上A,B,C,D四类匿名方法的写法,只有A和B是正确的。A只是
Excel 2016新增函数之IFS
Excel 2016新增函数之IFS在2016年1月功能更新中,EXCEL 2016新增几个常用重要函数,主要有:ifs,switch,maxifs,minifs,concat,textjoin等。注意,要能使用上述函数,Office的版本很重要,并不是所有的Office 2016能使用。建议在https://products.office.com/zh-CN/try试用O...
职场中的一些有趣现象
最近偶然看到一片文章,说许多公司有劣币驱逐良币现象。特地研究了一下,发现一些很有意思的问题。 一个环境中只要形成一种“势”,总会趋向于一个结果,人力很难更改。就像水流一样,一旦平衡局势没有了,水就开始流动,形成新的平衡,或者整个环境都不平衡,从而腐烂。望气者不执一端,与世沉浮、顺势而为。或许看清形势,不至于陷入窘境而不自知。 例如:科学家做过一个研究,用计算机模拟人的行为发现,在一个环境中,有...
Linux中shell编程需要避免的坑之shell语法篇(四)
shell函数 1.带有返回值的函数,如下: fun (){ a=10 b=20 echo "测试例子中的两个参数分别是$a 和 $b" return $(($a+$b)) } fun echo "两数之和为 $? " 通过$?接收返回参数 注意:所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分,调用函数时候直接函数名调用即可。 2.传参函数,如
Shell判断文件是否可在$PATH中找到并且可执行
#!/bin/bash # 判断一个文件是否是 可执行文件,且判断能否在PATH中找到,有三种结果 # (1) 找到且可执行 0 # (2) 找到且不可执行 1 # (3) 没找到 2
crontab执行shell奇怪的现象
我写了个脚本放入计划日志每5分钟执行一次,很多台电脑显示都正常,可是每过几周总有一台机出现奇怪现象。rn现象:rn 脚本执行了一半就被系统杀掉了,脚本里有3个循环,每个循环时间大概1分多。而且就连续被杀3次,第一次死在第一个循环里,第二次死在第二个循环,第三次死在第三个循环。然后又正常了rn此脚本手动执行,相互交叉没有影响的rn实在是不清楚什么原因了。。。是系统杀的还是crontab做的???
Shell 中的环境变量 和 本地变量
前提: linus 系统 查看环境变量 envenv# 查看具体的环境变量的名称env | grep 变量名查看本地变量set# 同理,查看具体的本地环境的变量名set | grep 变量名设置本地变量key=value #注意:不要有空格本地变量 ==> 转成环境变量export key=value # 直接设置环境变量# 再有,就是分两步: key=value export key删除变量uns
关于类加载的奇怪面试题
关于类加载的奇怪面试题废话不说,看下面代码。在一般的代码里。如果遇到以下等情况,就会触发类加载。 1.类名.静态变量 2.Class.forName(类名) 3.类名.class 触发类加载时候,首先会执行静态代码块的内容。然后再执行代码语句。class A{ public static int value = 134; static{ System.ou
测试右键菜单
测试右键菜单的一个很奇怪的现象。诡异事件。
如何定义shell的IFS?
我作了一下测试,在终端中输入:rnecho $IFSrn输出一条空行rnIFS=:rnecho $IFSrn还是一条空行(本以为会输出一个‘:’)rnIFS=“:”rnecho $IFSrn还是一条空行(本以为会输出一个‘:’)rnIFS=$":"rnecho $IFSrn还是一条空行(本以为会输出一个‘:’)rnrn究竟如何才可以改变IFS的值?请高手指教,非常感谢!
奇怪的现象!奇怪的现象!奇怪的现象!
各位大侠:rn 在我的程序中,编写打印程序,使典型的方法 rn TPrinter *Prntr = Printer();rn Prntr->BeginDoc();rn ............rn Prntr->EndDoc();rn但程序不向下进行,通过设置断点,程序运行在Prntr->BeginDoc();,下面的不执行.rn但奇怪的是将程序最小化,打印就出来了.why?rn
改变IFS会导致变量内容都成为字符串格式,$()、``对变量的操作都失效
IFS是linux内置的定义分隔符的一个全局变量,今天在写脚本时间定义了IFS分隔符为逗号(,) IFS="," 引发了一个诡异的问题,故编写测试脚本进行测试,内容如下: #!/bin/bash a='echo hello world' echo $($a) IFS=$',' a='echo hello world' echo $($a) 上面脚本如果是正常输出的话应该是会输出两...
shell script中奇怪的符号之${0##*/}
${0##*/}最近在shell script中遇到一个奇怪的符号: ${0##*/},它的意思是: 0表示当前执行的脚本名称 ##表示去掉匹配后面模式的字符串 */表示前面是任何字符串接一个/ 因此它的含义就是去掉当前执行脚本文件的前面的路径名.
IFS 采购手册
IFS 采购手册,介绍IFS中采购介绍,
idea出现的怪异现象
项目没有动,打开,可能是我之前测试数据源的问题?不知道... 反正点开一个controller,里面包错 import org.springframework.jdbc.core.PreparedStatementSetter; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.sup
《Linux命令行与shell脚本编程大全》(第三版)读书笔记
第一部分 Linux命令行第三章、基本的bash shell命令bash手册man 命令例子:man cat 空格翻页、回车下一行、左右键看右侧(左侧)内容、q退出 infoinfo info 展示info页面,没看出有什么特别的 hostname设置hostnamehostname mycomputer 浏览文件系统遍历目录cd切换目录cd /home/a 切换到/home/a目录,绝对路径 c
shell文件按行切割
split -l 100 src.txt dst
用vc++实现IFS分形算法画一棵树
void IFS() { double a[][8]={ 0,0.195,-0.488 ,0.344 ,0.433 ,0.4431 ,0.2452 ,0.25 ,\ 0,0.462 ,0.414 ,-0.252 ,0.361 ,0.2511 ,0.5692 ,0.25,\ 0,-0.058 ,-0.07 ,0.453 ,-0.111 ,0.5976 ,0.0969 ,0.25 ,\
局域网内ip冲突引起的怪异现象
我在局域网内玩某台设备E1,采取的是静态接入方式, ip为172.18.18.20, 可是, 设备E1的网络一会儿正常, 一会儿不正常, 我就手动重启好几次, 发现依然有问题。 百思不得其解, 于是怀疑172.18.18.20这个IP在捣蛋, 后来就干脆停掉了E1, 此时用pc去ping 172.18.18.20, 居然发现这个IP有时候能ping通, 有时候不能ping通。
Linux中shell编程需要避免的坑之shell语法篇(一)
开头用#!/bin/bash用于shell识别 定义数组用小括号等号两边不允许有空格 arry = (A B C) 正确如下 arry=(A B C) √ echo "获取数组元素*和@都可以 : ${myarr[*]} 另一种:${myarr[@]}" echo "获取数组长度加#号 : ${#myarr[*]} 另一种:${#myarr[@]}" 算术运算