当前位置:网站首页>Shell 編程核心技術《四》
Shell 編程核心技術《四》
2022-07-04 19:23: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 代碼,有了它調試就變得非常方便。
友情提示:“無量測試之道”原創著作,歡迎關注交流,禁止第三方不顯示文章來源時轉載。
边栏推荐
- 奥迪AUDI EDI INVOIC发票报文详解
- 请教一下 flinksql中 除了数据统计结果是状态被保存 数据本身也是状态吗
- Scala basic tutorial -- 19 -- actor
- 【机器学习的数学基础】(一)线性代数(Linear Algebra)(上+)
- 读写关闭的channel是啥后果?
- A method of using tree LSTM reinforcement learning for connection sequence selection
- LM10丨余弦波动顺势网格策略
- 用实际例子详细探究OpenCV的轮廓绘制函数drawContours()
- Using SSH
- 千万不要只学 Oracle、MySQL!
猜你喜欢

Scala基础教程--16--泛型

基于C语言的菜鸟驿站管理系统

How is the entered query SQL statement executed?

Wanghongru research group of Institute of genomics, Chinese Academy of Agricultural Sciences is cordially invited to join

OpenCV的二值化处理函数threshold()详解

自由小兵儿

千万不要只学 Oracle、MySQL!

Nebula Importer 数据导入实践

基于unity的愤怒的小鸟设计

正则替换【JS,正则表达式】
随机推荐
Using FTP
测试工程师如何“攻城”(下)
[mathematical basis of machine learning] (I) linear algebra (Part 1 +)
In flinksql, in addition to data statistics, is the saved data itself a state
Using SSH
IBM WebSphere MQ检索邮件
Leetcode ransom letter C # answer
《看完就懂系列》字符串截取方法substr() 、 slice() 和 substring()之间的区别和用法
Is the securities account opened by qiniu safe?
Scala basic tutorial -- 17 -- Collection
自由小兵儿
从实时应用角度谈通信总线仲裁机制和网络流控
Uni app and uviewui realize the imitation of Xiaomi mall app (with source code)
页面元素垂直水平居中、实现已知或者未知宽度的垂直水平居中。
神经网络物联网平台搭建(物联网平台搭建实战教程)
性能优化之关键渲染路径
2014 Hefei 31st youth informatics Olympic Games (primary school group) test questions
What if the self incrementing ID of online MySQL is exhausted?
LeetCode第300场周赛(20220703)
DeFi生态NFT流动性挖矿系统开发搭建