在 Bourne shell 及其衍生版本中,
根据定义,IFS 是 shell 内置变量、环境变量还是其他变量?
(这个程序模块在文献中通常是如何分类的?)
答案1
据该消息来源称, 2. Shell命令语言:
2.5.3 Shell 变量
变量应从环境中初始化(如 XBD 环境变量和 POSIX.1-2017 系统接口卷中的 exec 函数所定义),并且可以使用变量赋值命令为其赋予新值。如果变量是从环境中初始化的,则应立即将其标记为导出;请参阅导出专用内置。可以使用变量赋值、使用 read 或 getopts 实用程序、使用 for 循环中的 name 参数、使用 ${ name= word} 扩展或使用作为实现扩展提供的其他机制来定义和初始化新变量。
具体来说IFS
:
IFS 被视为字符列表的字符串,用于字段拆分、
*
特殊参数的扩展以及使用读取实用程序将行拆分为字段。如果 的值包含不构成有效字符一部分的任何字节,则字段分割、 扩展以及实用程序的使用的IFS
结果是未指定的。*
read
如果
IFS
未设置,则对于未设置的变量,它的行为应与正常情况一样,除了 shell 的字段分割和实用read
程序的行分割应按照 的值执行时IFS
一样<space> <tab> <newline>
;请参阅字段拆分。shell 应在调用时设置
IFS
为。<space> <tab> <newline>