PHP 스크립트를 사용하기 위해 bash 스크립트를 작성했습니다. bash 스크립트는 PHP 스크립트에 대한 인수 목록을 만듭니다 (bash 스크립트의 인수를 PHP 스크립트에 전달하는 것과 반대 됨)bash 스크립트 내에서 PHP getopt
bash 스크립트에서 생성 된 인수 행을 사용하여 PHP 스크립트를 직접 호출하면 .! 여기
#!/bin/sh
export PROFILE=$1
export TS_FILE=$2
if [ ! -z $PROFILE ] && [ -e $PROFILE ]; then
source $PROFILE
else
source default_profile
fi
if [ ! -z $TS_FILE ] && [ -e $TS_FILE ]; then
source $TS_FILE
else
source default_ts
fi
# create args for php script
ARGS_PHP="--agent \"$AGENT\" --sig \"$SIG_FILE\" --cie \"$CMPGY\" --super \"$SUPERVISOR\" --type \"$WRK_TYPE\" -d $DATES"
for nb_days in $(seq 0 $((DATES-1))); do
ARGS_PHP="$ARGS_PHP --date ${DATE_DATE[$nb_days]} --label \"${DATE_LABEL[$nb_days]}\" --as ${DATE_START[$i]} --pe ${DATE_END[$i]} --dt ${DATE_TOTAL[$i]}"
done
#echo ./script.php "$ARGS_PHP"
./script.php $ARGS_PHP
과 미세한 Howhever, bash는 스크립트가 스크립트에서 같은 줄을 실행하려고 할 때, (PHP) getopt에 실패 여기
이 bash는 스크립트를 작동 getopt는 (PHP) PHP 스크립트 : 내가 의도 한대로 bash는 스크립트를 실행하면 9,285,273,210, 내가 얻을 :
array(1) {
["agent"]=>
string(5) ""Name"
}
나는 "에코"행의 주석을 해제하고 PHP 스크립트 호출을 언급, 내가 얻을 :
./script.php --agent "Name Surname" --sig "../../path/sig.png" --cie "Cie Name" --super "Name Surname" --type "String" -d 5 --date 2014-03-31 --label "Some label Value" --as 9:00 --pe 17:00 --dt 7:30 --date 2014-04-01 --label "Some label Value" --as 9:00 --pe 17:00 --dt 7:30 --date 2014-04-02 --label "Some label Value" --as 9:00 --pe 17:00 --dt 7:30 --date 2014-04-03 --label "Some label Value" --as 9:00 --pe 17:00 --dt 7:30 --date 2014-04-04 --label "Some label Value" --as 9:00 --pe 17:00 --dt 7:30
나는 경우, 그 줄을 실행, 내가 얻을 :
array(11) {
["agent"]=>
string(12) "Name Surname"
["sig"]=>
string(18) "../../path/sig.png"
["cie"]=>
string(8) "Cie Name"
["super"]=>
string(12) "Name Surname"
["type"]=>
string(6) "String"
["d"]=>
string(1) "5"
["date"]=>
array(5) {
[0]=>
string(10) "2014-03-31"
[1]=>
string(10) "2014-04-01"
[2]=>
string(10) "2014-04-02"
[3]=>
string(10) "2014-04-03"
[4]=>
string(10) "2014-04-04"
}
["label"]=>
array(5) {
[0]=>
string(16) "Some label Value"
[1]=>
string(16) "Some label Value"
[2]=>
string(16) "Some label Value"
[3]=>
string(16) "Some label Value"
[4]=>
string(16) "Some label Value"
}
["as"]=>
array(5) {
[0]=>
string(4) "9:00"
[1]=>
string(4) "9:00"
[2]=>
string(4) "9:00"
[3]=>
string(4) "9:00"
[4]=>
string(4) "9:00"
}
["pe"]=>
array(5) {
[0]=>
string(5) "17:00"
[1]=>
string(5) "17:00"
[2]=>
string(5) "17:00"
[3]=>
string(5) "17:00"
[4]=>
string(5) "17:00"
}
["dt"]=>
array(5) {
[0]=>
string(4) "7:30"
[1]=>
string(4) "7:30"
[2]=>
string(4) "7:30"
[3]=>
string(4) "7:30"
[4]=>
string(4) "7:30"
}
}
나는 var_dump($options)
을 언급하고 var_dump($argv)
내가 일 수 주석을 해제하는 경우 e는 bash 스크립트에서와 같이 명령 줄에서 PHP 스크립트와 동일한 동작을합니다. 어느 것이 $ ARGS_PHP bash 변수의 모든 (하위) 단어의 배열입니다. 내가 "$ARGS_PHP"
을 인용하는 경우
, 내가 얻을 :
array(0) {
}
형태 $argv
array(2) {
[0]=>
string(16) "./script.php"
[1]=>
string(490) "--agent "Name Surname" --sig "../../path/sig.png" --cie "Cie Name" --super "Name Surname" --type "String" -d 5 --date 2014-03-31 --label "Some label Value" --as 9:00 --pe 17:00 --dt 7:30 --date 2014-04-01 --label "Some label Value" --as 9:00 --pe 17:00 --dt 7:30 --date 2014-04-02 --label "Some label Value" --as 9:00 --pe 17:00 --dt 7:30 --date 2014-04-03 --label "Some label Value" --as 9:00 --pe 17:00 --dt 7:30 --date 2014-04-04 --label "Some label Value" --as 9:00 --pe 17:00 --dt 7:30"
}
$options
와
PS :
DEFAULT_PROFILE :
export AGENT="Name Surname"
export SIG_FILE="../../path/sig.png"
default_ts :
#!/bin/sh
# default dummy values for TS (testing purposes)
# date solver. Default fills current week TS starting monday to friday
CURRENT=$(date +%u)
DOW=("monday" "tuesday" "wednesday" "thursday" "friday")
function solve_date(){
THIS_DOW=$1
if [ $CURRENT -eq $THIS_DOW ];then
date +%F
elif [ $CURRENT -gt $1 ];then
date --date "last ${DOW[$((THIS_DOW-1))]}" +%F
else
date --date "next ${DOW[$((THIS_DOW-1))]}" +%F
fi
}
export DATES=$((5))
export CMPGY="Cie Name"
export SUPERVISOR="Name Surname"
export WRK_TYPE="String"
DATE_DATE[0]=$(solve_date 1)
DATE_LABEL[0]="Some label Value"
DATE_START[0]="9:00"
DATE_END[0]="17:00"
DATE_TOTAL[0]="7:30"
DATE_DATE[1]=$(solve_date 2)
DATE_LABEL[1]="Some label Value"
DATE_START[1]="9:00"
DATE_END[1]="17:00"
DATE_TOTAL[1]="7:30"
DATE_DATE[2]=$(solve_date 3)
DATE_LABEL[2]="Some label Value"
DATE_START[2]="9:00"
DATE_END[2]="17:00"
DATE_TOTAL[2]="7:30"
DATE_DATE[3]=$(solve_date 4)
DATE_LABEL[3]="Some label Value"
DATE_START[3]="9:00"
DATE_END[3]="17:00"
DATE_TOTAL[3]="7:30"
DATE_DATE[4]=$(solve_date 5)
DATE_LABEL[4]="Some label Value"
DATE_START[4]="9:00"
DATE_END[4]="17:00"
DATE_TOTAL[4]="7:30"
export DATE_DATE
export DATE_LABEL
export DATE_START
export DATE_END
export DATE_TOTAL
그게 효과가 있습니다. 감사! – Sebastien