[英]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循環。 考慮以下兩個腳本:
#!/usr/bin/env php
<?php
if (rand(1, 10) == 3) {
exit(1);
} else {
exit(0);
}
#!/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.