首頁 > 軟體

Shell入門基礎知識

2020-06-16 17:02:55

Shell 簡介

Shell作為命令語言,它互動式地解釋和執行使用者輸入的命令;作為程式設計語言,它定義了各種變數和引數,並提供了許多在高階語言中才具有的控制結構,包括迴圈和分支。

常常作為批次處理命令來使用,用來提高生產效率!

入門

下面是Shell的一段簡單入門程式,我們在Linux上面使用vi test.sh然後將下面的程式碼打進去,執行sh test.sh 即可

#!/bin/bash    

echo "Hello World !"

上面這段程式是輸出HelloWorld,其中#!/bin/bash 指定編譯器,必須在指令碼的第一行,echo輸出資訊,這裡為輸出Hello World

如何執行這段程式呢, 第一步首先進入到該指令碼所在的目錄,比如cd /root/shelltest ,執行命令sh test.sh 這樣就可以進行輸入了。

程式中的變數

定義全域性變數

全域性變數一直存在,不會因為切換shell終端或者退出登入而消失,全域性變數需要在 /root/.bush_profile 、/etc/bashrc、/etc/profile、/etc/profile.d檔案中設定,設定的格式為export name=value

在/etc/profile中定義完成後,需要重新載入組態檔 source /etc/profile

其中在/etc/profile.d設定shell指令碼可以在啟動shelle用戶端的時候就執行這個指令碼,這個資料夾中儲存的都為指令碼。

建立指令碼內容如下

則新開啟用戶端的時候則會執行這個指令碼,輸出對應的內容。

定義區域性變數, 區域性變數在退出Shell用戶端時會失效

單引號雙引號的區別

單引號:原樣輸出

雙引號:如果裡面有變數,會輸出變數

沒有引號:輸出變數

傳遞的引數

可以在呼叫指令碼的時候給指令碼傳遞引數,指令碼內使用$1 $2 ...... 接受傳遞的引數,當引數超過9的時候,需要用花括號括起來 ${10}

特殊的呼叫引數:

    $0:返回Shell檔名稱
    $$:當前指令碼的PID
    $#:傳遞的所有引數
    $@:程式中的所有引數,這是將引數傳遞給其他程式的最佳方式。
    $! :執行的上一個命令的PID
    $?:上一次指令的返回值
    $_:此命令前面的最後一個引數
    $* :獲取所有的引數

不同指令碼之間存取變數

使用sh命令啟動的指令碼,則在指令碼結束其內部的屬性都會消失,其他的指令碼不能存取其內部的屬性。

使用source 命令啟動指令碼,則在指令碼結束後其屬性不會失效,同時其他的指令碼也能存取到。

取消變數

使用unset可以取消變數,這個變數包括環境變數和區域性變數

陣列

陣列中可以存放多個值。Bash Shell 只支援一維陣列(不支援多維陣列),初始化時不需要定義陣列大小(與 PHP 類似),陣列下標從0開始。

定義陣列

    array=(value1 value2 value3)
    
    array_name[0]=value0

讀取陣列

${array_name[index]}

獲取陣列中全部的元素

${my_array[@]}

獲取陣列的長度

${#my_array[*]}

流程控制

if

如果else語句中沒有執行語句,不可以寫

if condition
then
    command1 
    command2
    ...
    commandN 
fi

------------------

if condition
then
    command1 
    command2
    ...
    commandN
else
    command
fi

------------
if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi

for

for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done

while

while condition
do
    command
done

until

類似do-while迴圈,在最後判斷條件,最少執行一次

until condition
do
    command
done

case

casein
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac

函數

demoFun(){   // 定義  
    echo "這是我的第一個 shell 函數!"
}
echo "-----函數開始執行-----"
demoFun   // 呼叫,如果需要傳遞引數直接在後面跟就好  demoFun 1 2 3
echo "-----函數執行完畢-----"

運算子

  • expr 是一款表示式計算工具,使用它能完成表示式的求值操作。

  • expr 2 + 2 使用方法 , 需要注意的為1.表示式和運算子之間要有空格 2. 需要用``引起來

關係運算子

使用方法:

if [ $a -eq $b ]
then
   echo "$a -eq $b : a 等於 b"
else
   echo "$a -eq $b: a 不等於 b"
fi

布林運算子

使用方法

if [ $a -lt 100 -a $b -gt 15 ]
then
   echo "$a 小於 100 且 $b 大於 15 : 返回 true"
else
   echo "$a 小於 100 且 $b 大於 15 : 返回 false"
fi

邏輯運算子

字串運算子

檔案測試運算子

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-11/148322.htm


IT145.com E-mail:sddin#qq.com