gpt4 book ai didi

bash - 运行 shell 脚本时如何解决 "shift: can' t shift the many"错误?

转载 作者:行者123 更新时间:2023-12-04 18:32:03 27 4
gpt4 key购买 nike

我有一个具有不同方法的 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 移动那么多 然后退出。我在 ubuntu 服务器上运行我的脚本。我已尝试解决此问题,但我找不到此错误的任何正确链接。有人请帮忙。

最佳答案

那些是函数,不是方法。不要在 OOD 术语不适用的地方过度应用它。

避免移位错误的最好方法是在参数用完时不要移位。在您移动之前检查 $# 的值。

如果不指定很多标志,解析 ps -ef 输出会更容易。您只需要 PID 和 PNAME。

关于bash - 运行 shell 脚本时如何解决 "shift: can' t shift the many"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38216468/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com