如何将bash中的While / Case语句转换为perl
这是bash中的循环:
而[$#-ge 1];做
案件1美元
-一个)
转移
NUM_AGENTS = $ 1
;;
-H)
转移
HOST_NAME = $ 1
;;
-t)
转移
TIME_STAGGER = $ 1
;;
-联合国)
转移
USER_NAME = $ 1
;;
-pw)
转移
USER_PASS = $ 1
;;
-p)
转移
TARGET_PAGE = $ 1
;;
-s)
转移
COMMON_SID = $ 1
;;
ESAC
转移
DONE
我如何在perl中转换它,以便参数将填充命令行中的值
php loadAgent_curl.php $ NUM_AGENTS $ HOST_NAME $ procStartTime $ i $ TARGET_PAGE $ reqlogfile $ resplogfile $ USER_NAME $ USER_PASS $ execDelay $ COMMON_SID&
-------追加问题:
这肯定有帮助,我真的很感激,有没有办法在getOptions之外访问这些参数?这是剩下的bash脚本:my $ i =“0”;
我的$ startTime =
date +%s
;
开始时间= $ [$ STARTTIME + $ NUM_AGENTS + 10]
我的$ PWD =pwd
;
我的$ logdir =“ $ PWD / load-logs”;
system(mkdir $ logdir / $ startTime);
my $ reqlogfile =“$ logdir / $ startTime / req.log”;
my $ resplogfile =“$ logdir / $ startTime / resp.log”;
打印“ n”;
print“################## n”;
打印“发出请求 n”;
打印“主机名: $ HOST_NAME n”;
打印“TARGET PAGE: $ TARGET_PAGE n”;
打印“#AGENTS: $ NUM_AGENTS n”;
打印“执行时间: $ startTime(随机错开0到 $ TIME_STAGGER秒) n”;
print“REQ LOG FILE:$ reqlogfile n”;
打印“RESP LOG FILE:$ resplogfile n”;
print“################## n”;
打印“ n”;
#
#
highestStart = $开始时间
$ startTime + = $ ARGV [0] + 5;
我的$ dTime = localtime($ startTime);
打印“ n ################## n n n启动请求 n
COUNT:$ ARGV [0] n
延迟:| 1 n
脚本将在以下位置触发:$ dTime n ################## n n“;
而($ ARGV [0]> $ i)
{
$ I ++;
system(“php avtestTimed.php $ ARGV [0] $ ARGV [2] $ startTime”);
打印“RUN系统('php avtestTimed.php $ ARGV [0] $ ARGV [2] $ startTime'); n”;
睡1;
}
#
#
而[$ NUM_AGENTS -gt“$ i”]
做
I = $ [$ I + 1]
execDelay = $((RANDOM%$ TIME_STAGGER))“。”$((RANDOM%100))
procStartTime = $ [$ STARTTIME]
procStartTime = $ [$ STARTTIME + $ execDelay]
如果[$ procStartTime -gt $ highestStart]
然后
highestStart = $ procStartTime
科幻
echo“STATUS:排队请求$ 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
DONE
echo“STATUS:等待排队的请求准备好”
而[date +%s
-lt $ startTime]
做
睡觉1
DONE
#
echo“STATUS:等待最后一次发出请求”
而[date +%s
-lt $ highestStart]
做
睡觉1
DONE
#
回声“状态:发出最后回复”
#
echo“STATUS:等待创建响应日志文件”
而[! -e“$ resplogfile”]
做
睡觉1
DONE
#
而[wc -l "$resplogfile"| awk '{print $1'}
-lt $ NUM_AGENTS]
做
#echo“(记录了$ NUM_AGENTS个回复的wc -l "$resplogfile"| awk '{print $1'}
)”
睡觉1
DONE
回声“状态:完成”
而真实;做
read -p“你想查看请求日志吗?[y / n]”yn
案件$ yn in
[Yy] *)cat $ reqlogfile;打破;;
[Nn] *)退出;;
*)回音“请回答是或否。”;;
ESAC
DONE
而真实;做
read -p“你想查看响应日志吗?[y / n]”yn
案件$ yn in
[是] *)cat $ resplogfile;打破;;
[Nn] *)退出;;
*)回音“请回答是或否。”;;
ESAC
DONE
没有找到相关结果
已邀请:
1 个回复
才改隘瘁
库是处理命令行选项的标准Perl方法。 这样的东西会起作用。未经测试 - 请注意! 请注意,由于您的PHP参数是命令行选项和一些未识别的变量之间的混合,我设计了第一个示例,以便所有可能的选项应存储在
散列中(例如,您的程序应使用
而不是
)。这使我能够做到非常简短和通用。 如果这很难阅读/理解,我还有第二个例子,它更简单但不那么通用
第二个不太先进但更直接的选择是: