簡體   English   中英

bash循環中的php腳本

[英]php script in bash loop

我是bash初學者,有PHP腳本; 在每次運行中,它返回0或1,我需要一個運行此PHP腳本的bash腳本,直到返回1。

PHP腳本:

/* sample code */
echo $number;

Bash腳本:

#!/bin/bash    
output=`php /var/www/site/script.php`
while [$output == 1]
do
output=`php /var/www/site/script.php`
done

PHP腳本有效,但bash腳本無效

重擊

$ bash /root/loop.sh
/root/loop.sh: line 6: syntax error near unexpected token `done'

在一段時間內使用語法corret,嘗試:

#!/bin/bash    
output=`php /var/www/site/script.php`
while [ "$output" -eq 1 ];
do
output=`php /var/www/site/script.php`
done

因此,您的PHP腳本不會“返回” 1,而是將1回顯到標准輸出。 如果您實際上返回了1,則可以更好地利用while循環。 考慮以下兩個腳本:

foo.php

#!/usr/bin/env php
<?php

if (rand(1, 10) == 3) {
    exit(1);
} else {
    exit(0);
}

foo.sh

#!/usr/bin/env bash
while ./foo.php
do
    echo -n "."
done
echo "done"

如果我們使這兩個文件chmod +x foo.php; chmod +x foo.sh執行( chmod +x foo.php; chmod +x foo.sh ),則可以從命令行運行./foo.sh

mike ~ $ ./foo.sh
.....done
mike ~ $ ./foo.sh
..................done
mike ~ $ ./foo.sh
...done

發生了什么? while查看命令運行的返回值; 如果為零,則繼續進行,否則停止。 通常,我們看到它運行[命令*,但是我們可以讓它運行任意命令,例如PHP腳本。

*是的,那些方括號不是語法, [是命令-如果您不相信我,請運行ls -l /bin/[ 這是您現有腳本的一個問題, []周圍沒有空格。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM