Existem muitos problemas:
-
foreachnão é uma palavra-chave bash: usefor - se você quiser executar um comando, use
$( ... )e não apenas os parênteses - a execução do comando no parêntese não é necessária, você pode simplesmente usar a expansão do shell
for i in *.DAT; do(em geral, consulte Por que * não * analisar 'ls'? ) - para testar se um valor é menor ou igual (consulte
man test):if [ $a -le 2 ] ; then - um
foré finalizado pordonee nãoend - um
ifé finalizado porfie nãoendif - se você der o nome do arquivo como um argumento para
wc, ele imprimirá o número de linhas e o nome do arquivo. Use<para fazerwcler a partir da entrada padrão
Para resumir:
#!/bin/sh
for i in *DAT; do
a=$( wc -l < "$i" )
if [ "$a" -le 2 ] ; then
mv "$i" aux1/pelvar/var/pel/projs/ar/shells/IGUD_OUT/backup
fi
done