shell脚本中间命令执行失败
㈠ 如何让shell脚本某一步出错输出错误提示并终止执行脚本
if [ 出错 ]
then echo "错误"; exit 1;
fi
㈡ 如何在shell脚本中,判断一个基本命令执行是否成功
1.连接到相应的Linux主机,进入Linux命令行状态,等待shell命令的输入。
㈢ shell脚本执行kill命令后自动停止的问题
背景:每周重启jenkins
所以写了一个脚本,命名为 auto_restart_jenkins.sh
其中里面包含了一个kill命令:ps -ef | grep jenkins | grep -v grep | awk '{print "kill -9 "$2}' | sh
但是每次执行到这一步的时候整个shell脚本就被kill掉了。
原因:因为shell脚本名中包含了jenkins,所以在执行kill命令的时候,也就把shell脚本kill掉了。
最后,改一下shell脚本名就好了,不要包含jenkins
或者在shell脚本中添加参数 export BUILD_ID=dontKillMe
㈣ Windows下Shell脚本运行错误展示错误信息并停止向下执行
shell脚本运行完毕之后会直接关闭窗口,不便于开发者查看运行结果,这点可以通过 sleep 来实现暂停
新建脚本 demoshell
在命令窗口执行 demoshell.sh xxxxx ,会启动 shell 窗口 ,打印 params1= xxxxx 之后就会关闭窗口
想要不关闭窗口可以在脚本的最后添加 sleep 来实现。
例如
再次执行 demoshell.sh xxxxx ,执行完毕之后,窗口不会直接关闭,可以查看运行结果
shell脚本还有一个不好的地方就是中间的一个命令运行失败之后还会继续向下执行,这是一个很危险的行为,并且向下执行的时候会冲掉失败信息,无法根据错误提示来修改脚本。
接下来执行一个不存在的任务,让shell脚本运行失败
执行失败之后由于 sleep 100 ,可以看到错误提示,如果没有 sleep 100 存在,执行失败之后也是立马关闭了窗口,看不到错误信息;而命令执行成功之后需要关闭窗口的,那能不能想办法做到两者兼顾呢?
答案是肯定的,原理就是判断命令执行状态,只有在命令执行失败的时候,触发sleep行为,阻塞命令向下运行
去掉 sleep 100 ,运行脚本,捕获到失败信息,显示错误信息,并停止向下执行
注释掉 ./gradlew :app:emptyTask -x lint ;
再次运行脚本,运行成功,直接就关闭了窗口