2012-05-02 6 views
3

У меня есть сценарий оболочки выше.Запуск php через скрипт unix

#!/bin/bash 

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

nice php -q -f ./data.php -- [email protected] 
ERR=$? 

exec $0 [email protected] 

У меня есть несколько сомнений

  1. Что такое $0 и что [email protected]
  2. что ERR=$?
  3. что делает -- [email protected] в 5-й линии делать
  4. Я хотел, если может знать Я передаю data.php в качестве параметра. так что у меня есть только сценарий оболочки i для всех видов выполнения. Скажем, я хочу, чтобы запустить "ш ss.sh data1.php", то это должно работать data1.php, если запустить "SS ss.sh data2.php" он должен работать data2.php -
+0

$ @ аргументы $ 0 первого аргумент ERR является возвращаемым значением от выполнения –

+0

(HTTP [Сомнения?]: //www.perlmonks.org/?node_id=444996) – Quentin

+0

- $ @ передает все аргументы php http://linux.die.net/man/1/php –

ответ

1

1) $0 это имя исполняемого файла (скрипт в вашем случае, например: если ваш скрипт называется start_me затем $0 является start_me)

2) ERR=$? получает код возврата nice php -q -f ./data.php -- [email protected]

3) -- [email protected] делает две вещи, прежде всего, сообщает команде php, что все следующие параметры должны быть переданы в data.php, а [email protected] передает весь данный параметр сценарию в ./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 [email protected] 
nice php -q -f ./$YOUR_FILE -- [email protected] 
0
$0 

это имя скрипта.

[email protected] 

аргументы, приведенные в сценарии

ERR=$? 

ловит код состояния предыдущей команды

php_command="php -q -f $1" 
shift 
nice $php_command -- [email protected] 

Вы берете первый параметр для ф-флаг, то вы перемещаетесь это от списка параметров и передать остальные после двойных тире.

+0

Я хочу запустить «sh ss.sh data.php». этот запуск запустит data.php i, если запустите «ss ss.sh data2.php», он должен запустить data2.php – aWebDeveloper

+0

Я отредактировал свой ответ. Надеюсь, это поможет вам – Tikkes

+0

будет содержать последнюю строку в вашем случае i.e exec $ 0 $ @ – aWebDeveloper

Смежные вопросы