当前位置:网站首页>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 代码,有了它调试就变得非常方便。
友情提示:“无量测试之道”原创著作,欢迎关注交流,禁止第三方不显示文章来源时转载。
边栏推荐
- [opencv introduction to mastery 9] opencv video capture, image and video conversion
- Leetcode ransom letter C # answer
- Cache é JSON uses JSON adapters
- ThreadLocal原理与使用
- repeat_P1002 [NOIP2002 普及组] 过河卒_dp
- 其他InterSystems %Net工具
- 使用SSH
- Scala基础教程--14--隐式转换
- 使用canal配合rocketmq监听mysql的binlog日志
- Nebula importer data import practice
猜你喜欢

My colleagues quietly told me that flying Book notification can still play like this

使用canal配合rocketmq监听mysql的binlog日志

Principle and application of ThreadLocal

Wireshark网络抓包

Nebula importer data import practice

正则替换【JS,正则表达式】

英特尔集成光电研究最新进展推动共封装光学和光互连技术进步

奥迪AUDI EDI INVOIC发票报文详解

Wireshark packet capturing TLS protocol bar displays version inconsistency

2022CoCa: Contrastive Captioners are Image-Text Fountion Models
随机推荐
技术分享 | 接口测试价值与体系
ThreadLocal原理与使用
C语言打印练习
PB的扩展DLL开发(超级篇)(七)
2022健康展,北京健博会,中国健康展,大健康展11月13日
DeFi生态NFT流动性挖矿系统开发搭建
Scala basic tutorial -- 18 -- set (2)
Lex and yacc based lexical analyzer + parser
Scala basic tutorial -- 19 -- actor
[release] a tool for testing WebService and database connection - dbtest v1.0
Scala基础教程--19--Actor
测试工程师如何“攻城”(上)
国元期货是正规平台吗?在国元期货开户安全吗?
LeetCode第300场周赛(20220703)
Send and receive IBM WebSphere MQ messages
建立自己的网站(15)
基于unity的愤怒的小鸟设计
神经网络物联网应用技术就业前景【欢迎补充】
Don't just learn Oracle and MySQL!
数组中的第K个最大元素