当前位置:网站首页>Shell 编程核心技术《四》
Shell 编程核心技术《四》
2022-07-04 17:47:00 【Wu_Candy】
今天分享的内容与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 代码,有了它调试就变得非常方便。
友情提示:“无量测试之道”原创著作,欢迎关注交流,禁止第三方不显示文章来源时转载。
边栏推荐
猜你喜欢

DeFi生态NFT流动性挖矿系统开发搭建
![[发布] 一个测试 WebService 和数据库连接的工具 - DBTest v1.0](/img/4e/4154fec22035725d6c7aecd3371b05.jpg)
[发布] 一个测试 WebService 和数据库连接的工具 - DBTest v1.0

基于lex和yacc的词法分析器+语法分析器

读写关闭的channel是啥后果?

神经网络物联网平台搭建(物联网平台搭建实战教程)

Mxnet implementation of googlenet (parallel connection network)

Torchdrug tutorial

Go microservice (II) - detailed introduction to protobuf

Scala基础教程--18--集合(二)

Nebula Importer 数据导入实践
随机推荐
What if the self incrementing ID of online MySQL is exhausted?
2014 Hefei 31st youth informatics Olympic Games (primary school group) test questions
基于lex和yacc的词法分析器+语法分析器
Angry bird design based on unity
Is the securities account opened by qiniu safe?
Li Chi's work and life summary in June 2022
repeat_P1002 [NOIP2002 普及组] 过河卒_dp
【OpenCV入门到精通之九】OpenCV之视频截取、图片与视频互转
ThreadLocal原理与使用
Wireshark网络抓包
Technology sharing | interface testing value and system
建立自己的网站(15)
The 15th youth informatics competition in Shushan District in 2019
My colleagues quietly told me that flying Book notification can still play like this
Scala基础教程--20--Akka
Rookie post station management system based on C language
Li Kou brush question diary /day2/2022.6.24
信息学奥赛一本通 1336:【例3-1】找树根和孩子
LeetCode第300场周赛(20220703)
Leetcode ransom letter C # answer