para loop no nohup

0

Eu estou tentando executar o script bash que executa 8 loops simulatenously.

um dos meus gostos por loop abaixo

for i in 00 01 02 03 04 ; do cat $INDIR/sys*$1.$i*csv | awk -F '\xac' 'BEGIN{OFS=";";} ($4 == 10)  { $1=$1; print }'> $OUTDIR/$1_$i.csv

Então eu convertei para seguir a sintaxe para rodar com nohup

nohup bash -c 'for i in 00 01 02 03 04; do cat $INDIR/rti*$1.$i*csv|awk -F \'\xac\' \'BEGIN{OFS=\";\";} ($4==10) { $1=$1; print }\'>$OUTDIR/$i.csv;done' &

Mas estou recebendo o seguinte erro

test.sh: line 9: syntax error near unexpected token '('
test.sh: line 9: 'nohup bash -c 'for i in 00 01 02 03 04; do cat $INDIR/rti*$1.$i*csv|awk -F \'\xac\' \'BEGIN{OFS=\";\";} ($4==10) { $1=$1; print }\'>$OUTDIR/$i.csv;done' & '

Eu também tentei seguir as alterações de código

nohup sh -c ''

nohup /bin/bash -c ''

\'\xac\'

mas sem progresso,

BTW meu loop for funciona sem nohup

Obrigado pela sua ajuda

    
por Murat 06.12.2017 / 13:48

1 resposta

2

Seria muito mais fácil (leia-se: mais leitura e manutenção) se você dividir seu código em dois scripts: um para executar a (s) função (ões) real (ais) e outro para iniciá-los. Exemplo de código para o último:

for i in 00 01 02 03 04; do
    nohup /path/to/workerScript.sh ${i}
done

Se você quiser manter a lógica em um único script, ainda poderá usar essa abordagem:

if [ $# -eq 0 ]; then
    for i in 00 01 02 03 04; do
        nohup $0 ${i}
    done

    exit 0
fi

# Rest of the logic follows
    
por 06.12.2017 / 14:11