Это связано с тем, что &
отправляет первую команду в фоновый режим, а после завершения printf test
фоновая команда из подоболочки показывает информацию перед выходом из подоболочки. создав test.tar.gz
в режиме отладки, вы можете увидеть порядок команд, как
++ printf test
++ printf .tar.gz
+ file=test.tar.gz
+ echo test.tar.gz
Хоуп теперь немного понятнее,