我有两个文件。
一个是一个简单的文本文件,其中包含我的 scron 脚本的所有真实路径链接以及参数
另一个文件是我的 cron 脚本本身。
我的 contab 文本文件就是这样的:
#!/bin/sh
/usr/bin/php -f /home/path/reports/report.php arg1
/usr/bin/php -f /home/path/reports/report.php arg2
cron 脚本读取 crontab 文件中的参数,并根据它的参数运行。
报告.php——
php $args = $argv[1];
$count = 0;
switch($args){
case 'arg1':
code and create certain file ....
exit;
case 'arg2':
code and create certain file ...
exit;
} // <--- this script runs perfectly if I run script manually through putty commend line, meaning it will run exactly what I want depending on what $argv[1] I put in manual commend line, BUT doesn't run automatically from crontab script
这个文件没有运行,也不知道为什么,当我通过命令行手动运行 report.php 时它运行,它可以工作。
我注意到并让它发挥作用的一件事是将report.php更改为:
报告.php——
$args = $argv[1];
$count = 0;
switch($args){
case ($args ='arg1'): // <- just putting the equal sign makes it work
code and create certain file ....
exit;
case ($args = 'arg2'):
code and create certain file ...
exit;
} // <-- this script was a test to see if it had anything to do with the equal sign, surprisingly script actually worked but only for first case no what matter what argv[1] I had, this is not what I am looking for.
问题是它只适用于第一种情况,无论我在 crobtab 的文本文件中输入什么参数,它总是运行第一种情况。可能是因为我在声明 $args = 'arg1',所以它总是将其视为 arg1。
所以我试图通过这样做来使其工作:
报告.php——
$args = $argv[1];
$count = 0;
switch($args){
case ($args =='arg1'): // <- == does not work at all....
code and create certain file ....
exit;
case ($args == 'arg2'):
code and create certain file ...
exit;
} // <--- this script runs perfectly if I run script manually through putty commend line, but not automatically from crontab script
这什么也没有运行,它根本没有接受我的论点,只是要注意这个带有比较“==”的report.php文件如果我在推荐行上手动运行就可以完美运行。
到底是怎么回事?当我使用“==”从 crontab 文件中查找我的参数时,为什么 cron 脚本不能正确读取我的参数。