Shell腳本應該怎么使用?

Shell腳本,就是利用Shell的命令解釋的功能,對一個純文本的文件進行解析,然后執行這些功能,也可以說Shell腳本就是一系列命令的集合。Shell可以直接使用在win/Unix/linux上面,并且可以調用大量系統內部的功能來解釋執行程序,如果熟練掌握Shell腳本,可以讓我們操作計算機變得更加輕松,也會節省很多時間。

Shell應用場景

Shell能做什么

  • 將一些復雜的命令簡單化(平時我們提交一次github代碼可能需要很多步驟,但是可以用shell簡化成一步)

  • 可以寫一些腳本自動實現一個工程中自動更換最新的sdk(庫)

  • 自動打包、編譯、發布等功能

  • 清理磁盤中空文件夾

  • 總之一切有規律的活腳本都可以嘗試一下

Shell不能做什么

  • 需要精密的運算的時候

  • 需要語言效率很高的時候

  • 需要一些網絡操作的時候

  • 總之Shell就是可以快速開發一個腳本簡化開發流程,并不可以用來替代高級語言


Shell的工作原理

Shell可以被稱作是腳本語言,因為它本身是不需要編譯的,而是通過解釋器解釋之后再編譯執行,和傳統語言相比多了解釋的過程所以效率會略差于傳統的直接編譯的語言。


最簡單的腳本:

#!/bin/bashecho "Hello World"

只需要打開文本編輯工具,編輯成以上的樣子,然后保存成test.sh

運行該腳本:

1. cd 到該目錄下2. chmod +x ./test.sh  #給腳本權限3. ./test.sh  #執行腳本

Shell腳本應該怎么使用?

效果圖1

這樣我們便寫出來了第一個最簡單的腳本,下面我們可以嘗試著寫一些復雜的腳本。


Shell中的變量

myText="hello world"muNum=100

這里面需要注意的就是,“=”前后不能有空格,命名規則就和其它語言一樣了。

訪問變量

myText="hello world"muNum=100echo $myTextecho muNum

當想要訪問變量的時候,需要使用$,否則輸出的將是純文本內容,如下圖所示。

Shell腳本應該怎么使用?

效果圖2

Shell中的四則運算

Shell腳本應該怎么使用?

例子程序

#!/bin/bashecho "Hello World !"a=3b=5val=`expr $a + $b`echo "Total value : $val"val=`expr $a - $b`echo "Total value : $val"val=`expr $a * $b`echo "Total value : $val"val=`expr $a / $b`echo "Total value : $val"

這里面需要注意的就是,定義變量的時候“=”前后是不能有空格的,但是進行四則運算的時候運算符號前后一定要有空格,乘法的時候需要進行轉義。

Shell腳本應該怎么使用?

效果圖3.png


其它運算符 =、==、!=、!、-o、-a

Shell腳本應該怎么使用?

例子程序

a=3b=5val=`expr $a / $b`echo "Total value : $val"val=`expr $a % $b`echo "Total value : $val"if [ $a == $b ]then     echo "a is equal to b"fiif [ $a != $b ]then     echo "a is not equal to b"fi
Shell腳本應該怎么使用?

效果圖4


關系運算符

Shell腳本應該怎么使用?

#!/bin/sh例子程序

a=10b=20if [ $a -eq $b ]then     echo "true"else     echo "false"fiif [ $a -ne $b ]then     echo "true"else     echo "false"fiif [ $a -gt $b ]then     echo "true"else     echo "false"fiif [ $a -lt $b ]then     echo "true"else     echo "false"fiif [ $a -ge $b ]then     echo "true"else     echo "false"fiif [ $a -le $b ]then     echo "true"else     echo "false"fi
Shell腳本應該怎么使用?

效果圖5


字符串運算符

Shell腳本應該怎么使用?


Shell腳本應該怎么使用?


字符串

#!/bin/shmtext="hello"  #定義字符串  mtext2="world"mtext3=$mtext" "$mtext2  #字符串的拼接echo $mtext3  #輸出字符串echo ${#mtext3}  #輸出字符串長度echo ${mtext3:1:4}  #截取字符串
Shell腳本應該怎么使用?

效果圖6


數組

#!/bin/sharray=(1 2 3 4 5)  #定義數組  array2=(aa bb cc dd ee)  #定義數組  value=${array[3]}  #找到某一個下標的數,然后賦值echo $value  #打印  value2=${array2[3]}  #找到某一個下標的數,然后賦值echo $value2  #打印  length=${#array[*]}  #獲取數組長度echo $length
Shell腳本應該怎么使用?

效果圖7


輸出程序

echo

#!/bin/shecho "hello world"  echo hello world      text="hello world"echo $textecho -e "hello nworld"  #輸出并且換行echo "hello world" > a.txt  #重定向到文件echo `date`  #輸出當前系統時間
Shell腳本應該怎么使用?

效果圖8

printf

同c語言,就不過多介紹了


判斷語句

  • if

  • if-else

  • if-elseIf

  • case

#!/bin/sha=10b=20if [ $a == $b ]then     echo "true"fiif [ $a == $b ]then     echo "true"else     echo "false"fiif [ $a == $b ]then     echo "a is equal to b"elif [ $a -gt $b ]then     echo "a is greater than b"elif [ $a -lt $b ]then     echo "a is less than b"else     echo "None of the condition met"fi

Shell腳本應該怎么使用?

效果圖9

test命令

test $[num1] -eq $[num2]  #判斷兩個變量是否相等  test num1=num2  #判斷兩個數字是否相等

Shell腳本應該怎么使用?

?

for循環


#!/bin/shfor i in {1..5}doecho $idonefor i in 5 6 7 8 9doecho $idonefor FILE in $HOME/.bash*do     echo $FILEdone
<span class="hljs-meta"><br>@@##@@</span>
效果10

while循環

#!/bin/shCOUNTER=0while [ $COUNTER -lt 5 ]doCOUNTER=`expr $COUNTER + 1`echo $COUNTERdoneecho '請輸入。。。'echo 'ctrl + d 即可停止該程序'while read FILMdoecho "Yeah! great film the $FILM"done

以上是while循環的兩種用法,第一種是比較常規的,執行循環,然后每次都把控制的數加1,就可以讓while循環有退出的條件了。

第二種是用戶從鍵盤數據,然后把用戶輸入的文字輸出出來。


跳出循環

break  #跳出所有循環  break n  #跳出第n層f循環  continue  #跳出當前循環

?

函數

#!/bin/shsysout(){echo "hello world"}    sysout

定義一個沒有返回值的函數,然后調用該函數

#!/bin/shtest(){        aNum=3anotherNum=5return $(($aNum+$anotherNum))  }  test  result=$?echo $result

定義一個有返回值的函數,調用該函數,輸出結果

Shell腳本應該怎么使用?

效果圖11

#!/bin/shtest(){echo $1  #接收第一個參數echo $2  #接收第二個參數echo $3  #接收第三個參數echo $#  #接收到參數的個數echo $*  #接收到的所有參數  }    test aa bb cc

定義了一個需要傳遞參數的函數

Shell腳本應該怎么使用?

效果圖12


重定向

$echo result > file  #將結果寫入文件,結果不會在控制臺展示,而是在文件中,覆蓋寫  $echo result >> file  #將結果寫入文件,結果不會在控制臺展示,而是在文件中,追加寫echo input < file  #獲取輸入流

?


寫一個自動輸入命令的腳本

自動提交github倉庫的腳本

#!/bin/bashecho "-------Begin-------"git add .  git commit -m $1echo $1git push origin masterecho "--------End--------"

?

Shell腳本應該怎么使用?

效果圖13


以上便是我對shell知識的總結,歡迎大家點心,評論,一起討論~~

?腳本程序

Shell腳本應該怎么使用?

? 版權聲明
THE END
喜歡就支持一下吧
點贊15 分享