Linux——Shell編程入門

Shell是一個命令行解釋器,它爲用戶提供了一個向Linux內核發送請求以便運行程序的界面系統級程序,用戶可以用戶Shell來啓動、掛起、停止、甚至編寫一個程序。

編寫第一個Shell腳本

在這裏插入圖片描述
在這裏插入圖片描述

運行Shell腳本

1.將Shell腳本作爲程序運行
在這裏插入圖片描述
2.將Shell腳本作爲參數傳遞給Bash解釋器(通過這種方式運行腳本,不需要在腳本文件的第一行指定解釋器信息)
在這裏插入圖片描述
3.通過source命令執行腳本文件(linux下的source命令
在這裏插入圖片描述

變量定義

  • Shell定義變量:
     	變量名=值(=兩邊不能有空格)
     	值 不包含任何空白符(例如空格、Tab 縮進等),那麼可以不使用引號
     	值 包含了空白符,那麼就必須使用引號包圍起來
    
  • 變量定義規則
        變量名由數字、字母、下劃線組成
        必須以字母或者下劃線開頭
        不能使用 Shell 裏的關鍵字,並且一般爲大寫
    

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

設置環境變量

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在另外一個shell程序中使用TOMCAT_HOME
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

位置參數變量

運行 Shell 腳本文件時我們可以給它傳遞一些參數,就可以使用位置參數變量。例如:./myshell.sh 100 200這個執行shell的命令行,可以將命令行參數傳遞到myshell腳本內。

變量 含義
$n n爲數字,$0代表當前腳本的文件名,$1-99使9代表第一個到第九個參數,大於9個以上的參數需要使用大括號。例如:{10}
$* 代表命令行中所有的參數,並把所有參數看成一個整體
$@ 代表命令行中所有的參數,但是把每個參數區分對待
$# 代表命令行中所有參數的個數

在這裏插入圖片描述

預定義變量

shell設計者事先已經定義好的變量,可以直接在shell腳本中使用。

變量 含義
$$ 當前進程的進程號(PID)
$! 後臺運行的最後一個進程的進程號(PID)
$? 最後一次執行命令的返回狀態,如果這個變量的值爲0,則說明上一個命令執行正確,否則,上一個命令執行不正確

在這裏插入圖片描述

註釋

  •  # 單行註釋
    
  • :<<!  
             多行註釋
    !
    

運算符

  • 語法:
     	1. "$((運算式))" 或 "$[運算式]"     
     	2.  expr 變量 運算符 變量(注意 expr運算符兩邊要留空格 且 乘號需要轉義  即 \*)
    

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

運算符

關係運算符(關係運算符只支持數字)
運算符 說明 舉例
-eq(equal) 檢測兩個數是否相等 [ $a -eq $b]
-ne(not equal) 不等於(檢測兩個數是否不相等) [ $a -ne $b ]
-gt( greater than ) 大於(檢測左邊的數是否大於右邊的 )[ $a -gt $b ]
-lt(less-than) 小於(檢測左邊的數是否小於右邊的) [ $a -lt $b ]
-ge(great than or equal ) 大於等於(檢測左邊的數是否大於等於右邊的) [ $a -ge $b ]
-le(less than or equal) 小於等於(檢測左邊的數是否小於等於右邊的) [ $a -le $b ]
布爾運算符
運算符 說明 舉例
! 非運算 [ ! false ]
-o 或運算 [ $a -lt 20 -o $b -gt 100 ]
-a 與運算 [ $a -lt 20 -a $b -gt 100 ]
邏輯運算符
運算符 說明 舉例
&& 邏輯的 AND [[ $a -lt 100 && $b -gt 100 ]]
|| 邏輯的 OR [[ $a -lt 100
字符串運算符
運算符 說明 舉例
= 檢測兩個字符串是否相等 [ $a = $b ]
!= 檢測兩個字符串是否不相等 [ $a != $b ]
-z 檢測字符串長度是否爲0 [ -z $a ]
-n 檢測字符串長度是否不爲0 [ -n “$a” ]
$ 檢測字符串是否爲空 [ $a ]
文件測試運算符
運算符 說明 舉例
-b file 檢測文件是否是塊設備文件 [ -b $file ]
-c file 檢測文件是否是字符設備文件 [ -c $file ]
-d file 檢測文件是否是目錄 [ -d $file ]
-f file 檢測文件是否是普通文件(既不是目錄,也不是設備文件) [ -f $file ]
-g file 檢測文件是否設置了 SGID 位 [ -g $file ]
-k file 檢測文件是否設置了粘着位(Sticky Bit) [ -k $file ]
-p file 檢測文件是否是有名管道 [ -p $file ]
-u file 檢測文件是否設置了 SUID 位 [ -u $file ]
-r file 檢測文件是否可讀 。 [ -r $file ]
-w file 檢測文件是否可寫 [ -w $file ]
-x file 檢測文件是否可執行 [ -x $file ]
-s file 檢測文件是否爲空(文件大小是否大於0) [ -s $file ]
-e file 檢測文件(包括目錄)是否存在 [ -e $file ]

流程控制

  •     if [ 條件判斷式 ]
        then
    		程序
    	elif [ 條件判斷式 ]
    	then
    		程序
    	else
    		程序
    	fi
    	注意:[ 條件判斷式 ]的中括號和條件判斷式之間必須有空格
    

在這裏插入圖片描述
在這裏插入圖片描述

  • case $變量名 in
    "值1")
    			如果變量的值等於值1,則執行程序1
    ;;
    "值2")
    			如果變量的值等於值2,則執行程序2
    ;;
    ... 省略其他分支 ...
    *)
    			如果變量的值都不是以上的值,則執行此程序
    ;;
    esac
    

在這裏插入圖片描述
在這裏插入圖片描述

  • for 變量 in 值1 值2 值3...
    do
    		程序
    done
    ------------------------------------------------------------------------------------------------------------
    for ((初始值; 循環控制條件; 變量變化))
    do
    		程序
    done
    

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

  • while [ 條件判斷式 ]
    do
    		程序
    done
    

在這裏插入圖片描述
在這裏插入圖片描述

函數

  • [ function ] function [()]
    {
    		Aciotn;
    		[return int;]
    }
    可以帶function funname() 定義,也可以直接funname() 定義,不帶任何參數。
    

在這裏插入圖片描述
在這裏插入圖片描述

  • read讀取控制檯輸入
     	read(選項)(參數)
     		選項:
     			-p:指定讀取值時的提示符
     			-t: 指定讀取值時候等待的時間(秒),如果沒有在指定的時間內輸入,就不再等待了
     		參數:
     			變量;指定讀取值的變量名
    
    在這裏插入圖片描述
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章