什么时候和为什么
当 shell 执行参数扩展,命令替换,变量或算术扩展时,它会扫描结果中的字边界。如果找到任何单词边界,则结果将在该位置拆分为多个单词。单词边界由 shell 变量 IFS
(内部字段分隔符)定义。IFS 的默认值是空格,制表符和换行符,即如果未明确禁止,则会在这三个空格字符上进行单词拆分。
set -x
var='I am
a
multiline string'
fun() {
echo "-$1-"
echo "*$2*"
echo ".$3."
}
fun $var
在上面的例子中,这是 fun
函数的执行方式:
fun I am a multiline string
$var
分为 5 个 args,只打印I
,am
和a
。