Вот цикл в bash:
while [ $# -ge 1 ]; do case $1 in -a) shift NUM_AGENTS=$1 ;; -h) shift HOST_NAME=$1 ;; -t) shift TIME_STAGGER=$1 ;; -un) shift USER_NAME=$1 ;; -pw) shift USER_PASS=$1 ;; -p) shift TARGET_PAGE=$1 ;; -s) shift COMMON_SID=$1 ;; esac shift done
Как я могу преобразовать это в perl, чтобы аргумент заполнил значения в командной строке
php loadAgent_curl.php $NUM_AGENTS $HOST_NAME $procStartTime $i $TARGET_PAGE $reqlogfile $resplogfile $USER_NAME $USER_PASS $execDelay $COMMON_SID &
------- добавлено к вопросу:
this certainly helps, and i really appreciate it, is there any way to access these parameters outside the getOptions ? here is rest of the bash script:
my $i="0"; my $startTime=date +%s
; startTime=$[$startTime+$NUM_AGENTS+10] my $PWD=pwd
; my $logdir="\$PWD/load-logs"; system(mkdir $logdir/$startTime); my $reqlogfile="$logdir/$startTime/req.log"; my $resplogfile="$logdir/$startTime/resp.log";напечатать "\n"; print "##################\n"; print "ЗАПУСК ЗАПРОСОВ\n"; напечатать "ИМЯ ХОСТА: \$HOST_NAME\n"; напечатать "ЦЕЛЬНАЯ СТРАНИЦА: \$TARGET_PAGE\n"; print " # АГЕНТЫ : \$NUM_AGENTS\n "; print "ВРЕМЯ ВЫПОЛНЕНИЯ: \$startTime (со случайным интервалом между 0 и \$TIME_STAGGER секунд)\n"; напечатать "REQ LOG FILE: $reqlogfile\n"; напечатать " ФАЙЛ ЖУРНАЛА RESP : $ resplogfile\n "; print "##################\n"; напечатать "\n"; # # самое высокоеНачало=$startTime
$startTime += $ARGV[0] + 5; мой $dTime = местное время ($ startTime); print "\n##################\nЗАПУСК ЗАПРОСОВ\n СЧЕТЧИК: $ARGV[0]\n ЗАДЕРЖКА: | 1 \n Сценарии сработают в: $dTime \n###################\n\n"; в то время как ($ARGV[0] > $i) {$i++; system("php avtestTimed.php $ARGV[0] $ARGV[2] $startTime"); print "ЗАПУСК системы('php avtestTimed.php $ARGV[0] $ARGV[2] $startTime'); \n"; спать 1; }
# # while [ $NUM_AGENTS -gt "$i" ] do i=$[$i+1] execDelay=$((RANDOM % $TIME_STAGGER))"."$((RANDOM % 100)) procStartTime=$[$ startTime] procStartTime=$[$startTime+$execDelay] if [ $procStartTime -gt $highestStart ] then highStart=$procStartTime fi echo "СТАТУС: запрос в очередь $i с задержкой $execDelay секунд"
echo " '--> КОМАНДА: php loadAgent_curl.php $NUM_AGENTS $HOST_NAME $procStartTime $i $TARGET_PAGE $reqlogfile $resplogfile $USER_NAME $USER_PASS $execDelay $COMMON_SID"
php loadAgent_curl.php $NUM_AGENTS $HOST_NAME $procStartTime $i $TARGET_PAGE $reqlogfile $resplogfile $USER_NAME $USER_PASS $execDelay $COMMON_SID и спящий режим 1 выполнено
echo "СТАТУС: Ожидание готовности запросов в очереди" while [
date +%s
-lt $startTime ] do sleep 1 done # echo "СТАТУС: Ожидание выдачи последнего запроса" while [date +%s
-lt $highestStart ] do sleep 1 done # echo "СОСТОЯНИЕ: Выдан последний ответ" # echo "СОСТОЯНИЕ: Ожидание создания файла журнала ответов" в то время как [ ! -e "$resplogfile" ] do sleep 1 done # while [wc -l "$resplogfile"| awk '{print $1'}
-lt $NUM_AGENTS ] do #echo "(wc -l "$resplogfile"| awk '{print $1'}
из $NUM_AGENTS ответов)" sleep 1 done echo "СТАТУС: ЗАВЕРШЕНО"пока верно; do read -p "Вы хотите просмотреть журнал запросов? [y/n]" yn case $yn in [Yy]* ) cat $reqlogfile; ломать;; [Nn]* ) выход;; * ) echo "Пожалуйста, ответьте да или нет.";; esac сделано
пока верно; do read -p "Вы хотите просмотреть журнал ответов? [y/n]" yn case $yn in [Yy]* ) cat $resplogfile; ломать;; [Nn]* ) выход;; * ) echo "Пожалуйста, ответьте да или нет.";; эсак сделано
getopts
, хотя она не обрабатывает многосимвольные параметры. С осторожностью можно использовать внешнюю утилитуgetopt
, которая обрабатывает длинные опции. - person Dennis Williamson   schedule 28.12.2010