Shell筆記,老男孩shell筆記

來源:互聯網
上載者:User

Shell筆記,老男孩shell筆記

#!/bin/bashvar2 = 'var2'echo $var2echo ${var2}var2 = 'var2_1' #變數可以重複定義但變數名前不加$var3 = 'var3'readonly var3 #將var3聲明為唯讀變數#var3 = 'var3_1' 這裡就不能再改變var3的值了var4 = 'var4'unset var4 #刪除var4變數#echo ${var4} 這裡不能再調用var4了var5 = 'var5'var6 = "This is ${var5}"       #拼接字串var7 = "This is "$var5" ,too" #拼接字串var8 = 'itvar8'echo ${#var8} #輸出var8的長度,即輸出6var9 = 'Hello World!'echo ${var9:1:5} #從字串第2個字元開始截取5個字元var10 = 'Hello World!'echo `expr index "$var10" World` #尋找字元World在字串中的位置arr1 = ('var1' 'var2' 'var3') #定義數組方式1arr2 = (                           #定義數組方式2    'var1'    'var2'    'var3'    )var3[1] = 'var2'            #通過下標賦值var_arr_1 = ${var2[1]}  #讀取數組元素var_arr_all = ${var2[@]}#讀取所有元素arr_lend_1 = ${#var2[@]} #擷取數組長度arr_lend_2 = ${#var2[*]} #擷取數組長度

向指令碼傳遞參數

#!/bin/bashecho "執行的檔案名稱$0";echo "第一個參數為$1";echo "第二個參數為$2";

 

  運行:

$ chmod +x shell.sh $ ./shell.sh 1 2執行的檔案名稱shell.sh第一個參數為1第二個參數為2

  特殊參數:

參數處理     說明$#     傳遞到指令碼的參數個數$*     以一個單字串顯示所有向指令碼傳遞的參數。如"$*"用「"」括起來的情況、以"$1 $2 … $n"的形式輸出所有參數。$$     指令碼啟動並執行當前進程ID號$!     後台啟動並執行最後一個進程的ID號$@     與$*相同,但是使用時加引號,並在引號中返回每個參數。如"$@"用「"」括起來的情況、以"$1" "$2" … "$n" 的形式輸出所有參數。$-     顯示Shell使用的當前選項,與set命令功能相同。$?     顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤。

  

算術運算:

  原生bash不支援簡單的數學運算,但是可以通過其他命令來實現,比如awk和expr

#!/bin/basha=10b=20val=`expr $a + $b`echo "a + b : $val"

 

檔案測試運算子:

  -r file :檔案是否可讀

  -w file: 檔案是否可寫

  -x file: 檔案是否可執行

file="/workplace/shell/shell.sh"if [ -r $file ]then   echo "檔案可讀"else   echo "檔案不可讀"fiif [ -w $file ]then   echo "檔案可寫"else   echo "檔案不可寫"fiif [ -x $file ]then   echo "檔案可執行"else   echo "檔案不可執行"fi

 

echo命令:

#!/bin/bashread name   #read 命令從標準輸入中讀取一行,並把輸入行的每個欄位的值指定給 shell 變數echo $nameecho "Hello World" > myfile #顯示結果定向至檔案 

 

流程式控制制:

  if的文法:

if condition1then    command1elif condition2 then     command2else    commandNfi

  for的文法:

for var in item1 item2 ... itemNdo    command1    command2    ...    commandNdone

  while的文法:

while conditiondo    commanddone

  例:

#!/bin/shint=1while(( $int<=5 ))do        echo $int        let "int++"done

  case的文法:

echo '輸入 1 到 4 之間的數字:'echo '你輸入的數字為:'read aNumcase $aNum in    1)  echo '你選擇了 1'    ;;    2)  echo '你選擇了 2'    ;;    3)  echo '你選擇了 3'    ;;    4)  echo '你選擇了 4'    ;;    *)  echo '你沒有輸入 1 到 4 之間的數字'    ;;esac

  

函數

funWithParam(){    echo "第一個參數為 $1 !"    echo "第二個參數為 $2 !"    echo "第十個參數為 $10 !"    echo "第十個參數為 ${10} !"    echo "第十一個參數為 ${11} !"    echo "參數總數有 $# 個!"    echo "作為一個字串輸出所有參數 $* !"}funWithParam 1 2 3 4 5 6 7 8 9 34 73

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.