通过unix脚本运行php

时间:2012-05-02 14:08:05

标签: php linux shell

我有上面的shell脚本。

#!/bin/bash

# a shell script that keeps looping until an exit code is given

nice php -q -f ./data.php -- $@
ERR=$?

exec $0 $@

我有些疑惑

  1. 什么是$0,什么是$@
  2. 什么是ERR=$?
  3. 第5行-- $@做什么
  4. 我想知道我是否可以将data.php作为参数传递。所以我只有i shell脚本用于所有类型的执行。说,我想运行" sh ss.sh data1.php"那么这应该运行data1.php,如果运行" ss ss.sh data2.php"它应该运行data2.php -

2 个答案:

答案 0 :(得分:1)

1)$0是可执行文件的名称(在您的情况下是脚本,例如:如果您的脚本被调用start_me,那么$0start_me

2)ERR=$?获取nice php -q -f ./data.php -- $@

的返回码

3)-- $@做了两件事,首先它告诉php命令所有后面的参数都应传递给data.php$@将所有给定参数传递给./data.php的脚本(例如./your_script_name foo bar将转换为nice php -q -f ./data.php -- foo bar

4)简短回答是,但您必须将脚本更改为

 YOUR_FILE=$1
 shift #this removes the first argument from $@
 nice php -q -f ./$YOUR_FILE -- $@

答案 1 :(得分:0)

$0 

是脚本的名称。

$@ 

是给脚本

的参数
ERR=$? 

捕获上一个命令的状态代码

php_command="php -q -f $1"
shift
nice $php_command -- $@

你取f-flag的第一个参数,然后将它从参数列表中移开,并在双破折号后传递其余参数。