我读过 bash 手册页和其他文档,但我发现解释有点令人困惑。
我有以下简单的脚本:
#!/bin/bash
IFS=""
echo $2
var=A B C
echo $var
如果我执行它,例如:
LANG=C ./args2 3 4
4
./args2: line 7: B: command not found
我真的不明白,为什么2美元=4?如果手册说:
如果IFS的值为空,则不会发生分词。
与 var 声明相同,为什么它会抱怨“B”?那么无论如何都存在分词吗?
答案1
答案2
在脚本运行之前,IFS 有其默认值。参数拆分是在运行脚本的 bash 实例中完成的,它会正常拆分内容,因为您尚未设置 IFS。