经历expansion后,就会经历word splitting
marvin@vm1:~$ echo a$'\t\t'b c
a b c
marvin@vm1:~$ sf/echowhat.sh a$'\t\t'b c
#! /bin/bash --verbose
echo $0
sf/echowhat.sh
echo $1
a b
echo "$1"
a b
echo $2
c
marvin@vm1:~$
echo a$'\t\t'b c
b后面的空格是metacharacter,用来分隔参数的;a和b之间的tab作为正常字符被传给了echo(并不是作为分隔参数的metacharacter),所以,该命令的输出中包含了两个tab,即输出为"atabtabb"
同样的参数传递给sf/echowhat.sh时,$1的值包括4个字符,即$1是"atabtabb",然后,echo $1时,就是echo atabtabb,这里的tab是metacharacter,用来分隔参数了,此时,echo收到了两个参数a和b,最终,echo atabtabb 输出的是"a空格b"
当然,echo "$1"时,则echo就收到了一个参数,即这一个参数就是"atabtabb",此时输出为"atabtabb"