Как проверить, существует ли файл на удаленной машине с помощью scp in loop - PullRequest
0 голосов
/ 27 июля 2011

Как зациклить этот код:

if scp remote-host:~/myfile ./ >& /dev/null
then 
    echo "transfer OK"
else 
    sleep 20
fi

цикл должен каждые 20 секунд проверять наличие файла на удаленном хосте, если файл появляется, цикл должен завершиться.

Ответы [ 2 ]

1 голос
/ 27 июля 2011
while true
do
    if scp remote-host:~/myfile . &> /dev/nul
    then
        echo "transfer OK"
        break
    fi
    sleep 30
done

Или, если вы предпочитаете что-то более компактное:

while :; do 
    (scp remote-host:~/myfile . &> /dev/null) && break
    sleep 30
done
echo "transfer OK"

Обратите внимание, что : - это встроенная нулевая команда с нулевым (успешным) кодом завершения.

1 голос
/ 27 июля 2011

Попробуйте:

while true
    if scp remote-host:~/myfile ./ >&/dev/null;
      then echo "transfer OK"; 
    fi
    sleep 20;
done
...