Existem muitos problemas:
-
foreach
nã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 pordone
e nãoend
- um
if
é finalizado porfi
e 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 fazerwc
ler 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