与 IFS 分裂

为了更清楚,让我们创建一个名为 showarg 的脚本:

#!/usr/bin/env bash
printf "%d args:" $#
printf " <%s>" "$@"
echo

现在让我们看看差异:

$ var="This is an example"
$ showarg $var
4 args: <This> <is> <an> <example>

$var 分为 4 个 args。IFS 是空白字符,因此在空格中发生了分词

$ var="This/is/an/example"
$ showarg $var
1 args: <This/is/an/example>

在上面的单词中没有发生拆分,因为找不到 IFS 字符。

现在让我们设置 IFS=/

$ IFS=/
$ var="This/is/an/example"
$ showarg $var
4 args: <This> <is> <an> <example>

$var 分为 4 个参数而不是单个参数。