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