shell 編程看這一篇就夠了


【shell功底1,分佈式計算】
【shell功底2,多組件管理腳本】

表達式

0、(())、test=[] 、[[]]

test 用於檢查某個條件是否成立

  • test 和 [] 是等價的,後續我們會交替使用 test 和 []
  • [[ ]] 是 test 的升級版,對細節進行了優化,並且擴展了一些功能
  • (( )) 只能進行整數運算,不能對小數(浮點數)或者字符串進行運算

注意:

[[ ]]和expression之間的空格,這兩個空格是必須的,否則會導致語法錯誤。
[]和expression之間的空格,這兩個空格是必須的,否則會導致語法錯誤。[]的寫法更加簡潔,比 test 使用頻率高

  • 總之,統一用[[]] 就好了

1、=~

其中 ~ 其實是對後面的正則表達式表示匹配的意思,如果匹配就輸出1, 不匹配就輸出0
[[ $test =~ \^\[0-9\]+ ]] && echo 1 || echo 0

2、文件表達式

文件表達式

表達式 意義
-e filename 如果 filename存在,則爲真
-d filename 如果 filename爲目錄,則爲真
-f filename 如果 filename爲常規文件,則爲真
-L filename 如果 filename爲符號鏈接,則爲真
-r filename 如果 filename可讀,則爲真
-w filename 如果 filename可寫,則爲真
-x filename 如果 filename可執行,則爲真
-s filename 如果文件長度不爲0,則爲真
-h filename 如果文件是軟鏈接,則爲真
filename1 -nt filename2 如果 filename1比 filename2新,則爲真
filename1 -ot filename2 如果 filename1比 filename2舊,則爲真

3、整數變量表達式

表達式 意義
-eq 等於
-ne 不等於
-gt 大於
-ge 大於等於
-lt 小於
-le 小於等於

4、字符串變量表達式

表達式 意義
If [ $a = $b ] 如果string1等於string2,則爲真
if [ $string1 != $string2 ] 如果string1不等於string2,則爲真
if [ -n $string ] 如果string 非空(非0),返回0(true)
if [ -z $string ] 如果string 爲空,則爲真
if [ $sting ] 如果string 非空,返回0 (和-n類似)

5、條件表達式的相反

表達式 意義
if [ ! 表達式 ]
if [ ! -d $num ] 如果不存在目錄$num
if [ 表達式1 –a 表達式2 ] 條件表達式的並列
if [ 表達式1 –o 表達式2 ] 條件表達式的或

6、set -x

用於腳本調試,在liunx腳本中可用set -x就可有詳細的日誌輸出.免的老是要echo了

#!/bin/bash
set -x
a=${1}
b=$
#運行結果
bash a.sh 1 2
+ a=1
+ b=1

7、set -e介紹

#!/bin/bash
set -e
command 1
command 2
...
exit 0

你寫的每個腳本都應該在文件開頭加上set -e,這句語句告訴bash如果任何語句的執行結果不是true則應該退出。這樣的好處是防止錯誤像滾雪球般變大導致一個致命的錯誤,而這些錯誤本應該在之前就被處理掉。如果要增加可讀性,可以使用set -o errexit,它的作用與set -e相同。

使用-e幫助你檢查錯誤。如果你忘記檢查(執行語句的結果),bash會幫你執行。不幸的是,你將無法檢查$?,因爲如果執行的語句不是返回0,bash將無法執行到檢查的代碼。你可以使用其他的結構:

command  
if [ "$?"-ne 0]; then   
    echo "command failed";   
    exit 1;   
fi   
# could be replaced with
# 能夠被代替爲
command || { echo "command failed"; exit 1; }
#或者
if ! command; then  
     echo "command failed";   
    exit 1;   
fi  

如果你有一個命令返回非0或者你對語句執行的結果不關心,那你可以使用command || true,或者你有一段很長的代碼,你可以關閉錯誤檢查(不使用set -e),但是我還是建議你保守地使用這個語句。

常用命令

2、變量 — 特殊變量 — 環境變量

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

3、算數表達式

在這裏插入圖片描述

4、if 變量實戰

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

5、for case while 實戰

  • 5.1、將/opt目錄下所有的日誌文件全自動打包
    在這裏插入圖片描述
  • 5.2、找出192.168.1.1-10網段中,服務器已經關機的IP地址
    在這裏插入圖片描述
  • 5.3、批量創建賬號並隨機密碼
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章