【寫在最前】我們在平時的編程學習中,或多或少,或早或晚,都要接觸到Linux服務器;熟練掌握Shell編程技術,是從小白變大牛的必經之路!通過本文知識,讓我們花5分鐘時間徹底搞懂shell編程,相信聰明的你,看完一定會有收獲!
【正文開始】
什麼是shell?Shell 是一個用 C 語言編寫的程序,它是用戶使用 Linux 的橋梁。這個應用程序提供了一個界面,用戶通過這個界面訪問操作系統内核的服務。Shell 種類有很多,最常用的的是:Bourne Again Shell(即:/bin/bash,基本等同 /bin/sh),它非常易用且完全免費,是大多數Linux 系統默認的 Shell大家常見的shell腳本的第一行内容是: #!/bin/bash這一句就是告訴系統需要使用 /bin/bash 腳本解釋器來執行。
編寫第一個shell腳本實例: vim test.sh
然後輸入:
#!/bin/bashecho "Hello World !"
# 運行 Shell 腳本的兩種方法:1、作為可執行程序chmod x ./test.sh #使腳本具有執行權限./test.sh #直接執行腳本(./不可省略,表示在當前目錄查找,否則默認去環境變量PATH裡找) 2、作為解釋器參數例1: /bin/sh test.sh例2: /bin/php test.php這種方式運行的腳本,不需要在第一行指定解釋器信息(寫了也沒用)
# shell的注釋單行注釋: #多行注釋:
<<EOF (不常用)注釋内容...注釋内容...注釋内容...EOF
# 變量操作定義:str=abcd
注意: 變量名str和等号之間不能有空格(否則報錯:變量名未找到命令),不能有特殊符号(?*),不能以數字開頭(可以使用下劃線和大寫)
使用:${變量名} (大括号雖然是可選的,但是推薦用)(有利于區分邊界,防止意外情況)
隻讀: readonly 變量名 (沒有大括号)删除: unset 變量名 (删除後不能再用,不能删除隻讀變量)
# 字符串操作str="abcd"取長:echo ${#str} # 輸出 4截取: echo ${str:1:5} # 輸出 bcd(不會報越界)拼接:echo ${str}'abc' # 輸出 abcabc查找:echo `expr index "$str" cd` # 輸出3(注意必須是反引号)
判空:if test $str # 等價于 if [ $str ]
判等:if test $str = "abcd" # 等價于 if [ $str = "abcd" ]
# 數組操作共3種定義方式:1)array_name=(value0 value1 value2 value3)2)array_name=(value0value1value2value3)3)array_name[0]=value0array_name[1]=value1array_name[n]=valuen讀取數組: valuen=${array_name[n]}獲取數組所有元素:echo ${array_name[@]}獲取數組長度: length=${#array_name[@]}
# 自定義函數的實現
定義:func1(){echo "第一個參數為 $1 !"echo "第二個參數為 $2 !" }調用: func1 p1 p2
# 條件的處理if condition1thencommand1elif condition2 then command2elsecommandNfi
# 循環的處理1)for的寫法for var in item1 item2 ... itemNdo...done
一個例子:for loop in 1 2 3 4 5doecho "The value is: $loop"done
2)while 的寫法
int=1while(( $int<=5 ))doecho $intlet "int "done
## 文件測試運算符操作符 說明 舉例-e 檢測文件(包括目錄)是否存在-d 檢測文件是否是目錄-r 檢測文件是否可讀-w 檢測文件是否可寫-x 檢測文件是否可執行-s 檢測文件是否為空(文件大小是否大于0),不為空返回 true-b 檢測文件是否是塊設備文件, -c 檢測文件是否是字符設備文件-p 檢測文件是否是管道文件-l 檢測文件是否存在并且是一個符号鍊接。-f 檢測文件是否是普通文件(既不是目錄,也不是設備文件)-g 檢測文件是否設置了 SGID 位-u 檢測文件是否設置了 SUID 位-k 檢測文件是否設置了粘着位(Sticky Bit) -S: 檢測某文件是否是 socket。
一個示例:file="test.sh"if test -r $filethenecho "文件可讀"elseecho "文件不可讀"fi
【全文完】--------------------------------十年技術沉澱,隻做原創文章;及時關注作者,成就大牛之路!如果您對文章内容有不同意見或獨到見解,歡迎大家在評論區留言讨論,作者也會第一時間進行互動回複。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!