我有一个使用不同方法的shell脚本。脚本是
status(){
PID=$(ps -ef | grep jmeter_script.sh|grep -v grep|awk '{print $2}')
}
start(){
shift
if [ "$#" -ne 2 ]; then
exit 1;
fi
jmeter.sh -n -t "$1" -l "$2"
}
stop(){
while true; do
read -p "Do you really want to stop?" yn
case $yn in
[Yy]* ) ps -ef | grep jmeter | grep -v grep | awk '{print $2}'|xargs kill; break;;
[Nn]* ) exit;;
* ) echo "Please answer yes or no.";;
esac
view(){
#some code
}
####Main
while [ "$1" != "" ]; do
case "$1" in
start )
start
;;
stop)
stop
;;
status)
status
;;
view)
view
;;
*)
echo $"Usage: $0 {start|stop|status|view}"
exit 1
esac
shift
done
当我尝试使用./jmeter_script.sh start abc.jmx log.jtl
运行脚本时,出现错误./jmeter_script.sh: 19: shift: can't shift that many
,然后退出。我在ubuntu
服务器上运行我的脚本。我试图解决这个问题,但我没有找到任何适当的链接来解决此错误。有人请帮忙。
答案 0 :(得分:1)
这些是功能,而不是方法。如果OOD术语没有开始适用,请不要过分使用OOD术语。
避免换档错误的最佳方法是在用完参数时不要改变。检查你移动的$#之前的值。
如果没有指定大量标志,解析ps -ef输出会更容易。您只需要PID和PNAME。