Shell 编程核心技术《四》
欢迎关注【无量测试之道】公众号,回复【领取资源】,
Python编程学习资源干货、
Python+Appium框架APP的UI自动化、
Python+Selenium框架Web的UI自动化、
Python+Unittest框架API自动化、
资源和代码 免费送啦~
文章下方有公众号二维码,可直接微信扫一扫关注即可。
今天分享的内容与Shell 编程核心技术《三》是衔接的,需要结合着一起来阅读。
函数
接下来,我们把它封装成一个 tester_level函数,有了函数之后就可以在执行的过程中随时进行调用来实现功能封装和逻辑复用。
从上图中发现,调用test_001.sh脚本时并传入一个参数为:java,并没有输出我们预期的java auto tester,原因是因为只定义函数是不会得到执行的,比如此时没有输出任何有关的auto tester结果。
而我们运行 tester_level 函数并将 $2 参数传给它,此时 $2 是脚本的第二个参数,但却是 tester_level函数的第一个参数。
执行脚本,传入一个参数 java,没有任何显示,再传入一个 python 仍没有反应,直到传入 python java 两个参数后,才输出 java auto tester,因为 tester_level 接收的是整个脚本的第二个参数。
权限位执行Shell 脚本
通过前面案例的演示我们已经掌握使用 sh 执行脚本,但如果我们不想使用 sh 执行脚本,如果想让系统自动进行解析,可以通过加权限位实现。
首先查看test_001.sh的权限位目前是多少,可以使用命令:ls -l /tmp/test_001.sh,如上图所示,可以发现权限位中没有x,即没有可执行权限。
当我们直接输入命令:/tmp/test_001.sh,即test_001.sh文件所在的全路径时,报错提示:Permission denied没有执行权限。
如上图所示,使用命令:chmod +x /tmp/test_001.sh给文件添加可执行权限。
如上图所示,当没有给文件test_001.sh文件添加可执行权限时,直接使用命令:/tmp/test_001.sh是会报permission denied的错误的,但当给文件添加了可执行权限后,再次使用命令:/tmp/test_001.sh执行脚本时,就可以执行成功,没有报错。
添加PATH变量快速执行Shell 脚本
假如test_001.sh文件的全路径很长,如/user/candy/python/shell/project_person_tmp/test_001.sh,我们想要执行test_001.sh文件,按照上面介绍的方法,需要输入test_001.sh文件所在的全路径才能执行,这样未免太过于繁锁,每次执行都得很清楚的记得test_001.sh文件所在的全路径并输入,有没有更简捷的方法,如只输入文件名:test_001.sh就可以直接运行脚本呢?答案是有的。
解决方案是:将/tmp这个路径加入到PATH变量中,这时输入test_001.sh命令直接执行就不会再报错了。
Shell 脚本执行时调试
当我们的Shell脚本写错了,该如何在执行过程中进行调试呢?
如上图所示,可以使用sh -x 命令,它可以在脚本运行时打印当前脚本的每一行命令,当脚本出错时就可以知道到底是哪一行出错了,它通过以 + 开头的输出来显示当前正在执行的是哪一行的 Shell 代码,有了它调试就变得非常方便。
备注:我的个人公众号已正式开通,致力于测试技术的分享,包含:大数据测试、功能测试,测试开发,API接口自动化、测试运维、UI自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:
添加关注,让我们一起共同成长!