Shell指令碼常見使用

2021-08-20 14:41:32 字數 3997 閱讀 4447

shell指令碼常見使用

echo 命令用於向視窗輸出文字

定義變數 your_name=」rrr」 變數名和等號之間不能有空格

使用乙個定義過的變數,要在變數名前面加美元符號 如 echo $ 加花括號是為了幫助直譯器識別變數的邊界

刪除變數 unset variable_name

字串:

雙引號的優點:雙引號裡可以有變數 雙引號裡可以出現轉義字元 例如:

your_name='qinjx'

str="hello, i know you are \"$your_name\"! \n"

擷取: # 號擷取,刪除左邊字元,保留右邊字元。%號擷取,刪除右邊字元,保留左邊字元

echo $
定義陣列:

陣列名=(值1 值2 … 值n) 用括號來表示陣列,陣列元素用」空格」符號分割開。例如:

array_name=(value0 value1 value2 value3)

array_name[0]=value0

遍歷陣列 使用@符號可以獲取陣列中的所有元素,例如:

echo $
獲取陣列長度, 加#

length=$
注釋:

可以把這一段要注釋的**用一對花括號括起來,定義成乙個函式,沒有地方呼叫這個函式,這塊**就不會執行,達到了和注釋一樣的效果。
傳遞引數:

$n。n 代表乙個數字,1 為執行指令碼的第乙個引數,2 為執行指令碼的第二個引數, $0 為執行的檔名,$#	傳遞到指令碼的引數個數  $* 所有引數,合成乙個引數列印 $@ 所有引數,合成多個引數列印 

例如:echo "shell 傳遞引數例項!";

echo "執行的檔名:$0";

echo "第乙個引數為:$1";

echo "第二個引數為:$2";

echo "第三個引數為:$3";

$ ./test.sh 1 2 3

基本運算子:

原生bash不支援簡單的數**算,但是可以通過其他命令來實現,例如expr

#!/bin/bash

val=`expr 2 + 2`

echo "兩數之和為 : $val"

布林運算子: ! 非; -o 或; -a 與;

邏輯運算子 && and || or

字串運算子:

運算子 說明 舉例

= 檢測兩個字串是否相等,相等返回 true。 [ a = b ] 返回 false。

!= 檢測兩個字串是否相等,不相等返回 true。 [ a != b ] 返回 true。

-z 檢測字串長度是否為0,為0返回 true。 [ -z a]

返回fa

lse。

−n檢測

字串長

度是否為

0,不為

0返回t

rue。

[−n「

a ]返

回fal

se。−

n檢測字

符串長度

是否為0

,不為0

返回tr

ue。[

−n

「a」 ] 返回 true。

str 檢測字串是否為空,不為空返回 true。 [ $a ] 返回 true。

注意:比較兩個數字的時候使用 ==

顯示

-e 為開啟轉義

\n  換行    \c 不換行

如: echo -e "ok! \n"

echo "it it a test"

顯示結果定向至檔案

echo "it is a test" > myfile
輸出字串,不進行轉義或取變數(用單引號)

echo '$name\"'

結果 $name\"

顯示命令執行結果, 如顯示日期

echo `date`

注意: 這裡使用的是反引號 `, 而不是單引號 '。

流程控制:

注意:sh的流程控制不可為空,即不可以什麼都不寫空著。

if

if condition

then

command1

command2

...commandn

fi寫成一行則是:

if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi

末尾的fi就是if倒過來拼寫

if else

if condition

then

command1

command2

...commandn

else

command

fi

if else-if else

if condition1

then

command1

elif condition2

then

command2

else

commandn

fi例如:

a=10

b=20

if [ $a == $b ]

then

echo "a 等於 b"

elif [ $a -gt $b ]

then

echo "a 大於 b"

elif [ $a -lt $b ]

then

echo "a 小於 b"

else

echo "沒有符合的條件"

fi

if else語句經常與test命令結合使用

num1=$[2*3]

num2=$[1+5]

if test $[num1] -eq $[num2]

then

echo '兩個數字相等!'

else

echo '兩個數字不相等!'

fi

for 迴圈

for var in item1 item2 ... itemn

do command1

command2

...commandn

done

寫成一行:

for var in item1 item2 ... itemn; do command1; command2… done;

while 語句

#!/bin/sh

int=1

while(( $int<=5 ))

do echo $int

let "int++"

done

使用中使用了 bash let 命令,它用於執行乙個或多個表示式,變數計算中不需要加上 $ 來表示變數

函式

demofun()

echo "-----函式開始執行-----"

demofun

echo "-----函式執行完畢-----"

結果

-----函式開始執行-----

這是我的第乙個 shell 函式!

-----函式執行完畢-----

本文部分參考菜鳥聯盟 

Shell指令碼學習4 幾種常見的Shell

上面提到過,shell是一種指令碼語言,那麼,就必須有直譯器來執行這些指令碼。unix linux上常見的shell指令碼直譯器有bash sh csh ksh等,習慣上把它們稱作一種shell。我們常說有多少種shell,其實說的是shell指令碼直譯器。bash是linux標準預設的shell,...

shell指令碼的使用

說明 chmod a x test.sh 使指令碼具有執行許可權 a 20 b 10 1.算術運算子列表 運算子 說明 舉例 加法 expr a b 結果為 30。減法 expr a b 結果為 10。乘法 expr a b 結果為 200。乘法使用不同 除法 expr a b 結果為 2。取餘 e...

shell指令碼使用集錦

本章會記錄開發過程中用到的shell指令碼命令,會一直更新下去 shell本身的pid processid shell最後執行的後台process的pid 最後執行的命令的結束 返回值 使用set命令設定的flag一覽 所有 引數列表 如 所有引數列表。如 所有引數列 表。如 用 括起來的情況 以 ...