Não muito, você está perdendo o fi que finaliza a instrução if e {$file} expande para {/home/somedir} , com chaves literais. A expansão de parâmetro com chaves é ${file} , ou seja, o sinal de dólar sai de fora das chaves.
Além disso, o padrão /home/* corresponderá a todos os arquivos (não apenas aos diretórios), portanto, você obterá erros de touch , se houver algum. Pode não haver muitos em /home , mas é fácil alterar o padrão para /home/*/ , que deve corresponder apenas aos diretórios. a barra de tralha será então parte da variável, então leve isso em conta na comparação. (Como alternativa, teste também [ -d "$file" ] .)
Além disso, em geral, você deseja citar "$file" . Ou talvez dir seja mais apropriado aqui.
#!/bin/sh
for dir in /home/*/ ; do
if [ "$dir" != "/home/lost+found/" ] ; then
touch "$dir/FILE1"
fi
done