Usando o shell script para mover o arquivo após a execução com falha do Xfoil.

1

Eu usei este script para obter a maioria do meu código. Eu estou tentando editá-lo onde o código é executado continuamente, mesmo quando ficar preso em um arquivo. O que acontece com o script dataanalysis.sh original é que alguns arquivos levam muito tempo, 2-3 dias, para rodar em xfoil ou simplesmente congelar. Isso é onde

 timeout 1s xfoil $file < xfoil.com

entra. Eu quero que este stop xfoil seja executado e vá para o próximo arquivo. Onde estou tendo problemas é com o loop if:

if [ $? = 124 ]; then
                xargs mv -t $file < /Failed/$file
                it failed
fi

Isso deve mover o arquivo problemático para a pasta com falha, para que eu possa visualizar facilmente e possivelmente corrigi-los. Eu tinha debug configurado antes de me dizer quais arquivos falharam, então acho que a instrução if é executada, mas o arquivo nunca é movido. Eu pesquisei isso e estou perdido neste momento. Por favor ajude.

#!/bin/sh

bash -x ./script.sh
exec 5> debug_output.txt
BASH_XTRACEFD="5"
PS4='$lineno: '

cd ./airfoils

mkdir Failed



echo "failed airfoils" > failed.dat

#Then we loop over each file in the working directory whose name ends with .dat
for file in ./*.dat
do
        #we write commands to a text file called xfoil.com, this first line overwrite the file and the subsequent lines append to it
        echo "pane" > xfoil.com
        echo "oper" >> xfoil.com
        echo "visc 6.5e5" >> xfoil.com
        echo "pacc" >> xfoil.com
        #this is the only real dynamic line which we need
        echo $file'.analysis' >> xfoil.com
        echo "" >> xfoil.com
        echo "aseq 0 14 1.0" >> xfoil.com
        echo "pacc" >> xfoil.com
        echo "" >> xfoil.com
        echo "quit" >> xfoil.com

        set -x

        #we then run xfoil with its STDIN hooked up to the text file where we just wrote the commands to
        echo $file
        timeout 1s xfoil $file < xfoil.com

        if [ $? = 124 ]; then
                xargs mv -t $file < /Failed/$file
                it failed
        fi

        #finally we delete the dat file as we have created the polar

        set +x

        rm $file
done

Este é o script inteiro

eu corri como

bash data.sh
por Maciek Makopol 22.01.2017 / 22:42

0 respostas