Shell script
Shell script(外殼腳本)
為一種直譯語言,都由terminal直接呼叫.sh檔案,不像C或Java需要經過編譯生成.class或是.exe檔,直接開啟終端機到該資料夾路徑./***.sh即可執行
#! /bin/bash - 聲明該腳本由什麼解釋?
井字號驚嘆號#!放在一起就標誌這是一個ShellScript,而後面就是標示編譯它的路徑,還有/bin/csh , /bin/perl , /bin/awk , /bin/sed , /bin/echo其他腳本
readonly - 宣告變數只可讀取不可再被更改
typeset - 用來分配引數$1交由 echo秀出資料
引數 - $0代表名字 $1~$n 由terminal傳入 含式內只能傳$1
Exit與return的區別
作用不同,exit用於在程式運行的過程中隨時結束程序,exit的參數返回給OS的。Exit式結束一個進程,它將刪除進程的內存空間,同時把錯誤訊息返回父進程,而return式返回和數值並退出函數
通常都可以用 echo$?
呼叫出返回參數,成功為0,若不成功則有相對應的status codes
Return 關鍵字
用於結束函數並返回一個結果。若return不帶參數時,則返回函數體中最後一個命令的返回值,一樣可由echo $?呼叫出
現在大概有概念了,shell script也可以直接使用一些linux指令
例如 pwd ls 等等
如果我現在想設計一個.sh檔案
可以讓我外部傳入一個引數1為檔案路徑
並且搜尋該路徑找出引數2位於檔案列數
最後echo "The search keyword:$1 is in file $2 line."
該怎麼做呢?
grep -rnw '/path/to/somewhere/' -e 'pattern'
沒有echo "The search keyword:$1 is in file $2 line."
因為結果會是
The search keyword:~/study2021/s2112/d1205 is in file 南 line.
哇~~~ 太感謝了 shell 指令大神><
不好意思,我照了您的指令去嘗試
他讀不到記事本中的字,我檢查了指令好像也沒錯
請問有什麼問題嗎?