当前位置:网站首页>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 代码,有了它调试就变得非常方便。
友情提示:“无量测试之道”原创著作,欢迎关注交流,禁止第三方不显示文章来源时转载。
边栏推荐
- 2022 ByteDance daily practice experience (Tiktok)
- The CDC of sqlserver can read the data for the first time, but it can't read the data after adding, deleting and modifying. What's the reason
- Leetcode fizzbuzz C # answer
- 删除字符串中出现次数最少的字符【JS,Map排序,正则】
- 使用SSH
- [release] a tool for testing WebService and database connection - dbtest v1.0
- 模板_判断素数_开方 / 六素数法
- 千万不要只学 Oracle、MySQL!
- 6.26CF模拟赛E:价格最大化题解
- How is the entered query SQL statement executed?
猜你喜欢
随机推荐
[mathematical basis of machine learning] (I) linear algebra (Part 1 +)
prometheus安装
876. 链表的中间结点
基于lex和yacc的词法分析器+语法分析器
876. Intermediate node of linked list
LeetCode 赎金信 C#解答
[发布] 一个测试 WebService 和数据库连接的工具 - DBTest v1.0
Guys, for help, I use MySQL CDC 2.2.1 (Flink 1.14.5) to write Kafka and set
2022CoCa: Contrastive Captioners are Image-Text Fountion Models
MXNet对GoogLeNet的实现(并行连结网络)
Wireshark packet capturing TLS protocol bar displays version inconsistency
发送和接收IBM WebSphere MQ消息
Torchdrug tutorial
Scala basic tutorial -- 14 -- implicit conversion
From automation to digital twins, what can Tupo do?
Technology sharing | interface testing value and system
Principle and application of ThreadLocal
One question per day (2022-07-02) - Minimum refueling times
删除字符串中出现次数最少的字符【JS,Map排序,正则】
Nebula importer data import practice