Эксперимент 1
Вот мой первый script в файле с именем foo.sh
.
IFS=:
for i in foo:bar:baz
do
echo $i
done
Здесь выдается следующий вывод.
$ bash foo.sh
foo bar baz
Эксперимент 2
Это мой второй script.
IFS=:
for i in foo:bar:baz
do
unset IFS
echo $i
done
Здесь выдается следующий вывод.
$ bash foo.sh
foo:bar:baz
Эксперимент 3
Это мой третий script.
IFS=:
var=foo:bar:baz
for i in $var
do
echo $i
done
Здесь выдается следующий вывод.
$ bash foo.sh
foo
bar
baz
Почему результат во всех трех случаях отличается? Можете ли вы объяснить правила интерпретации IFS и команды, которые приводят к это разные выходы?