3

上記のシェルスクリプトがあります。

#!/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 を渡すことができるかどうか知りたかったのです。そのため、あらゆる種類の実行に対応するシェルスクリプトは1つしかありません。たとえば、「sh ss.sh data1.php」を実行したい場合は、data1.php を実行する必要があります。「ss ss.sh data2.php」を実行すると、data2.php を実行する必要があります。</li>
4

2 に答える 2

1

1)$0実行可能ファイルの名前です(あなたの場合のスクリプト、例:スクリプトが呼び出されstart_meた場合$0start_me

2)ERR=$?の戻りコードを取得しますnice php -q -f ./data.php -- $@

3) -- $@2 つのことを行います。まず、次のすべてのphpパラメーターが渡されることをコマンドに伝え、指定されたすべてのパラメーターをスクリプトに渡しますdata.php(たとえば、に変換されます) 。$@./data.php./your_script_name foo barnice php -q -f ./data.php -- foo bar

4) 簡単な答えはイエスですが、スクリプトを次のように変更する必要があります。

 YOUR_FILE=$1
 shift #this removes the first argument from $@
 nice php -q -f ./$YOUR_FILE -- $@
于 2012-05-02T14:16:47.057 に答える
0
$0 

スクリプトの名前です。

$@ 

スクリプトに与えられた引数です

ERR=$? 

前のコマンドのステータスコードをキャッチします

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

fフラグの最初のパラメーターを取得し、それをパラメーターリストからシフトして、残りを2つのダッシュの後に渡します。

于 2012-05-02T14:13:23.230 に答える