当前位置:网站首页>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 代码,有了它调试就变得非常方便。
友情提示:“无量测试之道”原创著作,欢迎关注交流,禁止第三方不显示文章来源时转载。
边栏推荐
- 神经网络物联网应用技术学什么
- 2022CoCa: Contrastive Captioners are Image-Text Fountion Models
- Process of manually encrypt the mass-producing firmware and programming ESP devices
- 测试工程师如何“攻城”(下)
- Mxnet implementation of googlenet (parallel connection network)
- TorchDrug教程
- sqlserver的CDC第一次查询的能读取到数据,但后面增删改读取不到,是什么原因
- One question per day (2022-07-02) - Minimum refueling times
- Cache é JSON uses JSON adapters
- Nature microbiology | viral genomes in six deep-sea sediments that can infect Archaea asgardii
猜你喜欢

2022CoCa: Contrastive Captioners are Image-Text Fountion Models

Rookie post station management system based on C language

神经网络物联网是什么意思通俗的解释

Torchdrug tutorial

Wireshark网络抓包

Go microservice (II) - detailed introduction to protobuf

Scala基础教程--13--函数进阶

Process of manually encrypt the mass-producing firmware and programming ESP devices
![[uniapp] uniapp development app online Preview PDF file](/img/11/d640338c626249057f7ad616b55c4f.png)
[uniapp] uniapp development app online Preview PDF file

神经网络物联网应用技术学什么
随机推荐
更安全、更智能、更精致,长安Lumin完虐宏光MINI EV?
What if the self incrementing ID of online MySQL is exhausted?
2022健康展,北京健博会,中国健康展,大健康展11月13日
Esp32-c3 introductory tutorial questions ⑫ - undefined reference to ROM_ temp_ to_ power, in function phy_ get_ romfunc_ addr
C#实现定义一套中间SQL可以跨库执行的SQL语句(案例详解)
Detailed explanation of issues related to SSL certificate renewal
Caché JSON 使用JSON适配器
Go微服务(二)——Protobuf详细入门
LeetCode 赎金信 C#解答
Caché WebSocket
Using SSH
Scala基础教程--12--读写数据
模板_大整数减法_无论大小关系
2021 Hefei informatics competition primary school group
千万不要只学 Oracle、MySQL!
完善的js事件委托
神经网络物联网是什么意思通俗的解释
Unity adds a function case similar to editor extension to its script, the use of ContextMenu
2021 合肥市信息学竞赛小学组
Scala基础教程--18--集合(二)