2016-01-31 2 views
0

Я пытаюсь зациклировать скрипт bash (cURL ниже), пока мой удаленный PHP-скрипт не равенfailure. Я пробовал следующее, и он работает, когда существует $fileName .. но не зацикливается, когда он возвращает failure.Loop bash script до тех пор, пока ответ cURL не будет равен строке

Мой PHP: команда

<?php 
$videoFile = $_GET["name"] . ".mp4"; 
if (file_exists($videoFile)) { 
    echo "success"; 
} else { 
    echo "failure"; 
} 
?> 

Bash:

until $(curl --output /dev/null --silent --head --fail "my-remote-php-script.php"); do 
    printf '.' 
    sleep 1 
done 

ответ

1

Это должно работать:

while [ "$(curl -s 'http://your-url.php')" == "failure" ]; do 
    echo -n '.' 
    sleep 1 
done 

The $() места локонов в суб-оболочке. Полученная строка, исходящая из вашего php-скрипта, сравнивается с failure.

+0

это работает! Спасибо. – user1661677

2

Попробуйте это:

url="http://server.tld/foo.php" 
until curl -sf "$url"; do echo -n "."; sleep 1; done