Рекурсивный вызов оболочки

Puede usar teecuando inicie el programa. Si está usando bash, puede hacer:

program > >(tee -a log.txt)

Eso redirigirá la salida estándar de programa una sustitución de proceso que ejecuta tee. Eso esencialmente escribe una copia de la salida estándar de programa log.txt. teecontinuará enviando la salida estándar a donde sea que vaya antes, probablemente la terminal dependiendo de cómo funcione program.

0
14.06.2019, 08:36
1 ответ

Здесь есть пара вопросов. В основном вы повторяете два цикла, один внутриfix.sh(с циклом while )и снова рекурсивно, вызывая dummy.sh. Кроме того, вы сбрасываете файл счетчика обратно в ноль в начале fix.sh, поэтому он никогда не сможет считать. У вас также есть обратный порядок, поэтому (рекурсивные )вызовы dummy.shпроисходят до того, как вы увеличиваете счетчик.

Предполагая, что требуется только рекурсивное поведение (, так как вы можете изменить dummy.sh):

fix.sh

#!/bin/bash -x

TEMCOUNTER_TMP=/home/user/etc/FILE_NAME"_tmp6"

RETRY_LOGIC=`cat $TEMCOUNTER_TMP`
echo $RETRY_LOGIC

# Does RETRY_LOGIC have a value?
if [ -z "$RETRY_LOGIC" ]
then
    RETRY_LOGIC=0
    echo 0 > $TEMCOUNTER_TMP
fi

# Try to apply fix
[ $((RANDOM %3)) = 0 ]

# Did it work?
if [ $? = 0 ]
then
    echo "Success!"
    rm $TEMCOUNTER_TMP
    exit
fi

if [ $RETRY_LOGIC -le 3 ]
then
    export RETRY_LOGIC=`expr $RETRY_LOGIC + 1`
    echo $RETRY_LOGIC > $TEMCOUNTER_TMP
    echo "Retrying..."
    /home/user/etc/Dummy.sh
else
    echo "Giving up"
    rm $TEMCOUNTER_TMP
fi

Кроме того, внимательно проверьте свои пути, вы добавили префикс /home/user/etc/к переменной TEMCOUNTER_TMPтолько в одном месте.

Обратите внимание, что командаexportделает $RETRY_LOGICдоступной при последующих попытках, поэтому, пока эта переменная не используется где-либо еще, вы можете удалить все строки, ссылающиеся на TEMCOUNTER_TMP, и все будет работать так же. Если вам действительно нужен этот файл, обратите внимание, что ловушка может быть лучше, чтобы потом очистить его.

3
28.01.2020, 02:22

Теги

Похожие вопросы