这可能是一个愚蠢的问题,但是我试图理解为什么以下代码的版本1可以正常工作,而版本2却不起作用:
版本1:
$ VAR=toto:fofo:bar
$ IFS=:
$ set $VAR
$ echo $1
toto
版本2:
$ IFS=:
$ set toto:fofo:bar
$ echo $1
toto fofo bar
我不明白为什么在第一个版本中将':'解释为分隔符,但在第二个版本中却根本不解释它们,就好像仅当它们是变量替换的输出时才被解释一样?>
答案 0 :(得分:1)
您是对的。分词仅适用于不加引号的参数扩展和命令替换的结果。它不会影响外壳解析或语法。
这里是man bash
,重点是:
IFS
内部字段分隔符,用于扩展后的分词 [...]