BASH脚本在IF期间因未知原因结束
我有一个bash脚本,它运行一系列Jmeter脚本。 我刚刚修改了脚本,因此它只有在正确设置环境变量(本例中为2个变量之一)的情况下才会运行 如果使用第一个环境,脚本将结束。 如果使用第二个环境选项,脚本将正确运行并完成 完整脚本:BASH脚本在IF期间因未知原因结束,bash,shell,command-line,jmeter,Bash,Shell,Command Line,Jmeter,我有一个bash脚本,它运行一系列Jmeter脚本。 我刚刚修改了脚本,因此它只有在正确设置环境变量(本例中为2个变量之一)的情况下才会运行 如果使用第一个环境,脚本将结束。 如果使用第二个环境选项,脚本将正确运行并完成 完整脚本: #!/bin/bash if [ "$#" -ne 4 ]; then echo "Parameters required: version environment plc_username plc_password" else cd $HOME/w
#!/bin/bash
if [ "$#" -ne 4 ]; then
echo "Parameters required: version environment plc_username plc_password"
else
cd $HOME/workspace/OptimumStart/resources/jmeterrun/
if [[ "$2" =~ ^hibagon ]]; then
echo 'doing hibagon'
echo 'using version '$1
source ./hibagon_env.sh $1
echo 'done hibagon env'
elif [[ "$2" =~ ^kameosa ]]; then
echo 'doing kameosa'
echo 'using version '$1
source ./kameosa_env.sh $1
echo 'done kameosa env'
if [[ "$2" =~ ^hibagon ]] || [[ "$2" =~ ^kameosa ]]; then
echo "Continuing to tests"
source ./user_env.sh $3 $4
echo 'done user env'
export jmtestFeature=DEV15298
env | grep jm
$HOME/apache-jmeter-2.11/bin/jmeter -n -t $HOME/workspace/OptimumStart/resources/jmeterscripts/DEV15298_Feedback/QA3 1985_AllowCoolingZwaveFeedback.jmx
echo 'done Allow Cooling Tests'
$HOME/apache-jmeter-2.11/bin/jmeter -n -t $HOME/workspace/OptimumStart/resources/jmeterscripts/DEV15298_Feedback/QA3 1986_WarmingZwaveFeedback.jmx
echo 'done Warming Tests'
$HOME/apache-jmeter-2.11/bin/jmeter -n -t $HOME/workspace/OptimumStart/resources/jmeterscripts/DEV15298_Feedback/QA3 1987_MaintainingZwaveFeedback.jmx
echo 'done Maintaining Tests'
$HOME/apache-jmeter-2.11/bin/jmeter -n -t $HOME/workspace/OptimumStart/resources/jmeterscripts/DEV15298_Feedback/QA31993_PreHeatingZwaveFeedback.jmx
echo 'done Pre Heating Tests'
$HOME/apache-jmeter-2.11/bin/jmeter -n -t $HOME/workspace/OptimumStart/resources/jmeterscripts/DEV15298_Feedback/QA-32651_PreZwaveOccChange.jmx
echo 'Done Occupancy change test'
$HOME/apache-jmeter-2.11/bin/jmeter -n -t $HOME/workspace/OptimumStart/resources/jmeterscripts/Createtree.jmx
echo 'Created tree of results'
else
echo "Unkown server, stopping tests"
fi
fi
fi
似乎给我带来问题的部分是
if [[ "$2" =~ ^hibagon ]]; then
echo 'doing hibagon'
echo 'using version '$1
source ./hibagon_env.sh $1
echo 'done hibagon env'
elif [[ "$2" =~ ^kameosa ]]; then
echo 'doing kameosa'
echo 'using version '$1
source ./kameosa_env.sh $1
echo 'done kameosa env'
如果使用3种不同的环境从命令行运行,则会发生以下情况
./jmeterrun2.sh testversion kameosa shaun shaun
doing kameosa
using version testversion
done kameosa env
Continuing to tests
done user env
jmtestFeature=DEV15298
OLDPWD=/home/shaunb/workspace/OptimumStart/resources/jmeterrun
jmuser=shaun
jmpass=shaun
jmPort=443
PWD=/home/shaunb/workspace/OptimumStart/resources/jmeterrun
jmtestVersion=testversion
jmHost=kameosa.passivonline.com
并继续运行脚本
./jmeterrun2.sh testversion hibagon shaun shaun
doing hibagon
using version testversion
done hibagon env
这就到此为止,什么也不做
./jmeterrun2.sh testversion noserver shaun shaun
这没用
./jmeterrun2.sh testversion noserver shaun shaun
如果您需要更多信息,请告诉我。我已经将您的脚本分解成一个函数库,我称之为jmFunctionLib。您可以在库中选择“源”或“点(.)”。e、 g:
ittoolbox.$ . ./jmFunctionLib
ONLY executable statement
USAGE: myJmrun version environment plc_username plc_password
我希望你能用这个。这种风格的目的是开发一种实践,帮助您避免“这个脚本有什么问题”类型的问题。怎么做
function comment
{
echo $* 1>&2
}
function quietly
{
"$@" 2> /dev/null
}
function myJminit
{
comment USAGE: myJmrun version environment plc_username plc_password
quietly comment 1. put all announcements on stderr as comments;
quietly comment 2. collapse into functions;
quietly comment 3. recognize parallel logic
}
function myJmeter
{
$HOME/apache-jmeter-2.11/bin/jmeter -n -t \
$HOME/workspace/OptimumStart/resources/jmeterscripts/"$1";
comment done $(echo "$1"|sed 's/.*_//; s/.jmx$//') Tests
}
function myJmfeed
{
myJmeter DEV15298_Feedback/"$1"
}
function myJmRun
{
[[ $# -lt 4 ]] && {
myJminit
return
};
cd $HOME/workspace/OptimumStart/resources/jmeterrun/;
case $2 in
*hibagon* | *kameosa*)
myJmaster "$@"
;;
*)
comment Unkown server, stopping tests
;;
esac
}
function myJmaster
{
comment "doing $2";
comment "using version $1";
source ${2}_env.sh;
comment done $2 env;
comment contintuing to tests;
source ./user_env.sh $3 $4;
comment done user env;
export jmtestFeature=DEV15298;
comment $(env | grep jm );
myJmfeed "QA3 1985_AllowCoolingZwaveFeedback.jmx";
myJmfeed "QA3 1986_WarmingZwaveFeedback.jmx";
myJmfeed "QA3 1987_MaintainingZwaveFeedback.jmx";
myJmfeed "QA31993_PreHeatingZwaveFeedback.jmx";
myJmfeed "QA-32651_PreZwaveOccChange.jmx";
myJmeter Createtree.jmx
}
comment ONLY executable statement; myJminit
您在突出显示的块中缺少一个
fi
。@Mat我将一个fi从脚本底部移到了echo“done kameosa env”之后,这修复了我的问题,感谢可能的重复