为什么不打击IFS值拆分扩展参数?

时间:2015-10-11 18:06:45

标签: bash

>export FOOBAR=foobar; IFS=b echo ${FOOBAR}

我期待看到

foo ar

但是我看到了

foobar

为什么?

2 个答案:

答案 0 :(得分:2)

IFS尚未生效。添加另一个“;”:

FOOBAR=foobar IFS=b; echo ${FOOBAR}

man bash部分 SIMPLE COMMAND EXPANSION 你可以阅读(缩写):

  When a simple command is executed
     
      
  1. 解析器标记为变量赋值的单词(命令名称前面的单词)将保存以供以后处理。

  2.   
  3. 扩展非变量赋值或重定向的单词。

  4.   
  5. ...
  6.   
  7. 每个变量赋值中的=之后的文本... []被分配给变量。
  8.   

所以IFS = b是在扩展$ FOOBAR之后完成的。

答案 1 :(得分:-1)

[edit]我删除了技术上不正确的答案。

http://tldp.org/LDP/abs/html/internalvariables.html “这个变量决定了Bash在解释字符串时如何识别字段或字边界。”