如何在 bash-script 中使用 Laravel-(artisan)-command 的输出?

How to use output of Laravel-(artisan)-command in bash-script?

我正在尝试为我的 docker 容器之一编写一个小的启动脚本。问题是 bash-脚本必须等到 artisan-command 回显“1”。 artisan-commands 句柄函数如下所示:

$condition = something-to-check;
if($condition){ echo 1; } else { echo 0; }

我的想法是这样的:

#!/bin/bash
while php artisan myapp:mycommand == "0"
do
   sleep 1m
done
do-something-else

我怎样才能做到这一点?

编辑:

对于通过 Google 来到这里的任何人 - James Taylor 的回答为我指明了正确的方向,这就是为什么我接受它并在问题中编辑我的解决方案。 方法是像这样编辑句柄函数:

/**
 * Execute the console command.
 *
 * @return int
 */
public function handle()
{
    $mycondition = true; //or whatever
    try{
        if($mycondition == false){
            echo "Some fancy status message based on the condition is false \n";
            exit(1);
        } else {
            echo "Some fancy status message based on the condition is true \n";
            exit (0);
        }
    } catch (\Exception){
        echo "Some fancy status message based on the condition with an exception\n";
        exit(1);
    }
}

并像这样设置 bash-脚本:

#!/bin/bash
until php /path/to/artisan myapp:mycommand
do
   echo "Condition is false!" 
   sleep 1m   #or whatever you wanna do
done
echo "Condition is true!"
do-something

将您的 app:mycommand 更新为 return 退出代码而不是 echo。

exit(1);

引用 PHP 退出函数:https://www.php.net/manual/en/function.exit.php