当前位置:网站首页>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 代碼,有了它調試就變得非常方便。
友情提示:“無量測試之道”原創著作,歡迎關注交流,禁止第三方不顯示文章來源時轉載。
边栏推荐
- Scala basic tutorial -- 14 -- implicit conversion
- Bi skills - permission axis
- Wireshark packet capturing TLS protocol bar displays version inconsistency
- php伪原创api对接方法
- 英特尔集成光电研究最新进展推动共封装光学和光互连技术进步
- 神经网络物联网是什么意思通俗的解释
- Process of manually encrypt the mass-producing firmware and programming ESP devices
- [go ~ 0 to 1] read, write and create files on the sixth day
- Esp32-c3 introductory tutorial questions ⑫ - undefined reference to ROM_ temp_ to_ power, in function phy_ get_ romfunc_ addr
- One question per day (2022-07-02) - Minimum refueling times
猜你喜欢
随机推荐
[release] a tool for testing WebService and database connection - dbtest v1.0
Wanghongru research group of Institute of genomics, Chinese Academy of Agricultural Sciences is cordially invited to join
Caché JSON 使用JSON适配器
模板_大整数减法_无论大小关系
Scala basic tutorial -- 14 -- implicit conversion
Scala基础教程--17--集合
2022CoCa: Contrastive Captioners are Image-Text Fountion Models
Send and receive IBM WebSphere MQ messages
《看完就懂系列》字符串截取方法substr() 、 slice() 和 substring()之间的区别和用法
Guys, for help, I use MySQL CDC 2.2.1 (Flink 1.14.5) to write Kafka and set
Wireshark packet capturing TLS protocol bar displays version inconsistency
1672. 最富有客户的资产总量
Download the first Tencent technology open day course essence!
876. 链表的中间结点
2022 ByteDance daily practice experience (Tiktok)
Basic tutorial of scala -- 16 -- generics
建立自己的网站(15)
[发布] 一个测试 WebService 和数据库连接的工具 - DBTest v1.0
Scala basic tutorial -- 15 -- recursion
The difference and usage between substr (), slice (), and substring () in the string interception methods of "understand series after reading"