当前位置:网站首页>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 代碼,有了它調試就變得非常方便。
友情提示:“無量測試之道”原創著作,歡迎關注交流,禁止第三方不顯示文章來源時轉載。
边栏推荐
- MXNet对GoogLeNet的实现(并行连结网络)
- In flinksql, in addition to data statistics, is the saved data itself a state
- Process of manually encrypt the mass-producing firmware and programming ESP devices
- [mathematical basis of machine learning] (I) linear algebra (Part 1 +)
- 工厂从自动化到数字孪生,图扑能干什么?
- 信息学奥赛一本通 1336:【例3-1】找树根和孩子
- Safer, smarter and more refined, Chang'an Lumin Wanmei Hongguang Mini EV?
- prometheus安装
- 请教一下 flinksql中 除了数据统计结果是状态被保存 数据本身也是状态吗
- 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
猜你喜欢
[发布] 一个测试 WebService 和数据库连接的工具 - DBTest v1.0
Scala基础教程--17--集合
LM10丨余弦波动顺势网格策略
The latest progress of Intel Integrated Optoelectronics Research promotes the progress of CO packaging optics and optical interconnection technology
Go微服务(二)——Protobuf详细入门
Lex and yacc based lexical analyzer + parser
Oracle with as ORA-00903: invalid table name 多表报错
基于C语言的菜鸟驿站管理系统
更安全、更智能、更精致,长安Lumin完虐宏光MINI EV?
Wireshark packet capturing TLS protocol bar displays version inconsistency
随机推荐
发送和接收IBM WebSphere MQ消息
Scala basic tutorial -- 14 -- implicit conversion
整理混乱的头文件,我用include what you use
The 300th weekly match of leetcode (20220703)
模板_大整数减法_无论大小关系
Scala basic tutorial -- 15 -- recursion
BI技巧丨权限轴
Scala基础教程--16--泛型
The latest progress of Intel Integrated Optoelectronics Research promotes the progress of CO packaging optics and optical interconnection technology
[go ~ 0 to 1] read, write and create files on the sixth day
876. 链表的中间结点
DeFi生态NFT流动性挖矿系统开发搭建
OpenCV的二值化处理函数threshold()详解
PB的扩展DLL开发(超级篇)(七)
LeetCode第300场周赛(20220703)
【机器学习的数学基础】(一)线性代数(Linear Algebra)(上+)
prometheus安装
Wireshark网络抓包
更安全、更智能、更精致,长安Lumin完虐宏光MINI EV?
ftp、sftp文件传输