Script de shell para recolher dados recursivamente de determinados arquivos no diretório e retornar valores para o arquivo [closed]

0

Estou fazendo um script de shell simples que minimiza o tempo gasto na pesquisa de todos os diretórios em um diretório pai e grep algumas coisas dentro de alguns arquivos. Aqui está meu script.

#!/bin/sh
MainDir=/var/opt/database/1227-1239/

cd "$MainDir"

for dir in $(ls); do

grep -i "STAGE,te_start_seq Starting" "$dir"/his_file | tail -1 >> /home/xtee/sst-logs.out

if [ -f "$dir"/sysconfig.out];
then
    grep -A 1 "Drive Model" "$dir"/sysconfig.out | tail -1 >> /home/xtee/sst-logs.out
else
    grep -m 1 "Physical memory size" "$dir"/node0/setupsys.out | tail -1 >> /home/xtee/sst-logs.out
fi

done

O script deve colocar a string STAGE,te_start_seq Starting sob o arquivo his_file e depois copiá-la sst-logs.out . Meu problema, porém, é a parte na instrução if . O script deve verificar o diretório atual para sysconfig.out , grep drive model e descarregar para sst-logs.out , se existir, caso contrário, altere o diretório para node0 , em seguida, grep physical memory size de setupsys.out e copie-o para sst-logs.out . Meu problema é, parece que a instrução if then else parece não funcionar, já que não despeja nenhum dado, mas se eu executar o grep manualmente, eu tenho dados.

O que há de errado com meu script de shell? Existe alguma maneira mais eficiente de fazer isso?

    
por Jude 28.09.2012 / 05:09

1 resposta

2
if [ -r "$dir"/sysconfig.out ];

Observe o espaço em branco entre t e ] .

    
por 28.09.2012 / 10:04