助记定义
IFS字符:shell变量$IFS中的每个字符
WS字符(whitespace characters):space(‘ ’),tab(‘\t’),newline(‘\n’)
IFSWS字符:出现在$IFS中的WS字符
输入
未被双引号quoted的parameter展开、command替换、算术展开的结果将作为Word分割的输入。
分隔符
IFS字符,IFSWS字符序列
分割逻辑
如果IFS is unset,或者$IFS == " \t\n"
忽略出现在input的开头和结尾的由IFSWS字符组成的字符序列
如果$IFS != " \t\n"
忽略出现在input的开头和结尾的由IFSWS字符组成的字符序列
任意一个非IFSWS字符的IFS字符后面紧跟着IFSWS字符序列将delimits a field
(?不知道这里的field怎么理解?)
如果$IFS == ""
不执行word分割
空值处理
""或''保留,并作为空串传给commands
移除由parameter展开的未被quoted的空值
作为一个word的一部分的quoted空值将被移除,如-d""移除后为-d