一尘不染

如何在命令中将参数传递给linux

linux

我需要稍后再运行一个mail.php文件,而不是让用户在提交register.php时等待发送验证电子邮件。

因此,我选择在1分钟后使用 at 命令在命令行中运行mail.php( 在register.php调用 ):

但是,当我处于at命令的交互模式时,我只能将参数发送到该php文件。

at now + 1 minute
at> php mail.php {email}     # {email} is the argument I want to pass

由于我希望这是自动的,因此我需要在运行时使用shell脚本:

at -f mail.sh

但是我找不到传递 {email} 参数的正确方法,

我试图 在Shell中设置一个环境变量,但也徒劳无功:

register.php 文件中,我写道:

shell_exec('export email=foo@bar.com');
shell_exec('at -f mail.sh now + 1 minute');

mail.sh中 ,我写道:

#! /bin/bash
php mail.php $email

阅读 378

收藏
2020-06-03

共1个答案

一尘不染

您可以从stdin中读取命令,而不是从文件中读取命令。(bash的)here-doc语法在这里很好用:

shell_exec('at now + 1 minute <<EOF
    php mail.php test@test.com
EOF
');
2020-06-03