IFS表示 Internal Field Separator (内部字段分隔符)
$IFS
在Linux下写下如下脚本:
test1.sh
输出:
test2.sh
输出:
这是因为$IFS
默认是空字符(空格Space、Tab、换行\n),把相邻的连续的分割符合并到了一起。而利用双引号包裹的字符串实际上是屏蔽了IFS的作用,当我做如下修改的时候那么输出就完全一致了。
这样就一样了:
再证明一下:
输出:
影响$*
$*
和$@
都是返回所有参数。
test2.sh
运行bash test3.sh 1 2 3
输出:
$*
将所有的参数认为是一个字段.
$@
以IFS(默认为空格)来划分字段,如果空格在 “”里面则不不划分。