IFS变量对加双引号和不加双引号变量的区别对待

1. IFS(Internal Field Seprator) 变量

IFS变量是一个特殊的环境变量,叫做内部域分隔符。IFS环境变量定义了bash shell用作字段分隔符的一系列字符。如果bash shell在数据中看到了这些字符中的任意一个,它就会假定这表明了列表中一个新数据字段的开始。

2. IFS对待未加双引号的变量

比如在Shell中输入以下代码:

IFS=:
_str_="hello:world"
for i in $_str_; do echo $i; done

会得到以下结果:

hello
world

原因是引用字符串变量$_str_没有加双引号时,Shell在for语句中根据IFS变量将字符串$_str_进行切割,切割成很多个字符串,然后逐个echo $i输出。

2. IFS对待加双引号的变量

在Shell中输入以下代码:

IFS=:
_str_="hello:world"
for i in "$_str_"; do echo $i; done

会得到以下结果:

hello world

原因是引用字符串变量$_str_加了双引号时,表示将其当作一个整体来处理,IFS不会起作用,所以上述for循环只会循环一次。然后echo $i的时候由于$i未加双引号,故被IFS切割,但由于echo将其一起输出,故在同一行上。
所以可知,在Shell中输入以下代码:

IFS=:
_str_="hello:world"
for i in "$_str_"; do echo "$i"; done

会得到以下结果:

hello:world

原文地址:https://www.cnblogs.com/BlueHeart0621/p/12237952.html

时间: 2024-08-14 23:14:12

IFS变量对加双引号和不加双引号变量的区别对待的相关文章

字符串加双引号""与不加的区别

加双引号"",表示精确匹配 不加双引号"",*表示通配符 =~ 左侧字符串是否能够被右侧的PATTERN所匹配(注意: 此表达式一般用于[[ ]]中:扩展的正则表达式) 原文地址:https://www.cnblogs.com/lqynkdcwy/p/9498778.html

描述Linux shell中单引号,双引号及不加引号的简单区别(计时2分钟)

简要总结: 单引号: 可以说是所见即所得:即将单引号内的内容原样输出,或者描述为单引号里面看到的是什么就会输出什么. 双引号: 把双引号内的内容输出出来:如果内容中有命令.变量等,会先把变量.命令解析出结果,然后在输出最终内容来. 不加引号: 不会将含有空格的字符串视为一个整体输出, 如果内容中有命令.变量等,会先把变量.命令解析出结果,然后在输出最终内容来,如果字符串中带有空格等特殊字符,则不能完整的输出,需要改加双引号,一般连续的字符串,数字,路径等可以用.

Linux正则表达式中单引号、双引号及不加引号的区别

1.单引号: 可以说是所见即所得:单引号里面看到的是什么就会输出什么.被单引号括起的内容不管是常量还是变量者不会发生替换. 2.双引号: 把双引号内的内容输出出来,如果内容中有命令.变量等,会先把变量.命令会先解析出结果,然后在输出最终内容来:被双引号括起的内容常量还是常量,变量则会发生替换,替换成变量内容. 3.不加引号: 不会将含有空格的字符串视为一个整体输出, 如果内容中有命令.变量等,会先把变量.命令解析出结果,然后在输出最终内容来,如果字符串中带有空格等特殊字符,则不能完整的输出,需要

Linux 命令中的单引号,不加任何参数以及双引号的作用

单引号: 可以说是所见即所得:即将单引号内的内容原样输出,或者描述为单引号里面看到的是什么就会输出什么.单引号''是全引用,被单引号括起的内容不管是常量还是变量者不会发生替换. 双引号: 把双引号内的内容输出出来:如果内容中有命令.变量等,会先把变量.命令解析出结果,然后在输出最终内容来.双引号""是部分引用,被双引号括起的内容常量还是常量,变量则会发生替换,替换成变量内容. 不加引号: 不会将含有空格的字符串视为一个整体输出, 如果内容中有命令.变量等,会先把变量.命令解析出结果,然

ajax post 传参数加引号和不加引号的区别

1.前言 用ajax技术,type:post,data:参数列表.参数列表就是一个JSON数据,但key可以加引号,也可以不加引号,那总有区别的. 2.区别 var d2 = "two"; var d4 ="four"; var idArr=idArr2=idArr3=[1,2,3,4]; $.ajax({ type: 'POST', data : { type:"get", "d1":"d1", //常规

python中类的方法里面变量前加self与不加self的区别

1.最近在执行一个UI自动化脚本登录网站时遇到一个很奇葩的问题:运行脚本后chromedriver会驱动浏览器打开网站执行脚本里面的一系列界面操作,操作完后浏览器自动关闭了(重点就在这里,我明明没有调用webdriver的close()或是quite()方法,为什么它就自动关闭了呢,之前写过一系列的脚本也没出现这个问题,很是纳闷) 2.在网上搜了下相关问题的贴子,很多说是因为谷歌浏览器的版本与chromedriver的版本不匹配,于是我下载了最新版本的谷歌浏览器和与之对应的chromedrive

python脚本中单引号’ 双引号“ 三个单引号‘’‘ 三个双引号”“” 差别 及反斜杠的用法

直接说结果,然后去理解 双引号内不用加反斜杠 单引号内必须加反斜杠 三单引号输入换行需要加单引号 三双引号最为完美,换行转义什么都不用加 参考:python3中单引号,双引号,三个单引号 ,三个双引号的差别,以及反斜杠的用法python单引号(').双引号(").三引号(''',""")Python中单引号,双引号,3个单引号及3个双引号的区别 原文地址:http://blog.51cto.com/weiruoyu/2333560

<转>Python 参数知识(变量前加星号的意义)

csdn上的牛人就是多,加油 —————————————————————————— 过量的参数 在运行时知道一个函数有什么参数,通常是不可能的.另一个情况是一个函数能操作很多对象.更有甚者,调用自身的函数变成一种api提供给可用的应用. 对于这些情况,python提供了两种特别的方法来定义函数的参数,允许函数接受过量的参数,不用显式声明参数.这些“额外”的参数下一步再解释. 注意args和kwargs只是python的约定.任何函数参数,你可以自己喜欢的方式命名,但是最好和python标准的惯用

Shell中的单引号(‘)双引号(”)和反引号(·)

在bash中,$.*.?.[.].'.".`.\.有特殊的含义.类似于编译器的预编译过程,bash在扫描命令行的过程中,会在文本层次上,优先解释所有的特殊字符,之后对转换完成的新命令行,进行内核的系统调用. 其中,反引号类似于函数调用,而不仅仅是简单的文本替换及匹配. 命令行中,被单引号引用的部分,其中所有的特殊字符按照普通字符解释: 双引号引用的部分,仅解释$(美元符号).\(\n \t除外).`(反引号),解释后的文本仅按照普通文字处理(同单引号). 反引号相当于命令替换,引用的部分优先执行