shell指令碼的使用

2021-07-27 11:13:59 字數 3332 閱讀 6060

說明:

$ 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。

% 取餘 `expr $b % $a` 結果為 0。

= 賦值 a=$b 將把變數 b 的值賦給 a。

== 相等 相同則返回 true。 [ $a == $b ] 返回 false。

!= 不相等 不相同則返回 true。 [ $a != $b ] 返回 true。

2. -運算子

-eq //等於

-ne //不等於

-gt //大於

-lt //小於

ge //大於等於

le //小於等於

a.最簡單的shell指令碼

#!/bin/bash

echo

"hello world !"

b. 從鍵盤上輸入內容

#!/bin/bash

echo

"what is your name?"

read person

echo

"hello, $person"

執行指令碼,輸出:(比如輸入乙個1)

what is your name?

hello,1

c. while迴圈

#!/bin/bash

counter=0

while [ $counter

-lt5 ]

docounter='expr $counter+1'

#shell指令碼不是直接+1的

echo

$counter

done

執行指令碼,輸出:

12345

d. until[條件] 條件為假時才執行迴圈

#!/bin/bash

a=0until [ ! $a

-lt5 ]

doecho

$a a=`expr $a + 1`

done

執行結果:

01234

e. for迴圈

#!/bin/bash

for loop in12

345do

echo

"the value is: $loop"

done

執行結果:

the value is: 1

the value is: 2

the value is: 3

the value is: 4

the value is: 5

f. 函式

#!/bin/bash

hello

() # invoke your function

hello

執行結果:

$./test.sh

hello world

$g. shell檔案包含執行其它指令碼

1. vi subscript.sh

#!/bin/bash

url=""

echo

$url

2. vi main.sh

#!/bin/bash

./subscript.sh

執行結果:

h. 實踐中總結

//if巢狀

if [ "$_x" = "wifi_dvr_x" ]

then

echo

"------------ run /dm05_sample-----------------"

/md05_judge

ret_value=$? //如果有3個以上的返回值先把返回值儲存

if [ $ret_value

-eq0 ]

then

echo

"run main_wifi"

/home/dvr/bin/main_wifi $ &

elif [ $ret_value

-eq1 ]; then

echo

"run md05_sample"

/md05_sample

elif [ $ret_value

-eq2 ]; then

echo

"run test pcb "

fifi

特殊變數列表

#!/bin/bash

echo

"file name: $0"

echo

"first parameter : $1"

echo

"first parameter : $2"

echo

"quoted values: $@"

echo

"quoted values: $*"

echo

"total number of parameters : $#"

執行結果:

$./test.sh zara ali

file name : ./test.sh

first parameter : zara

second parameter : ali

quoted values: zara ali

quoted values: zara ali

total number of parameters : 2

特殊變數列表 變數 含義

$0 當前指令碼的檔名

$n 傳遞給指令碼或函式的引數。n 是乙個數字,表示第幾個引數。例如,第乙個引數是$1,第二個引數是$2。

$# 傳遞給指令碼或函式的引數個數。

$* 傳遞給指令碼或函式的所有引數。

$@ 傳遞給指令碼或函式的所有引數。被雙引號(" ")包含時,與 $* 稍有不同,下面將會講到。

$? 上個命令的退出狀態,或函式的返回值。

$$ 當前shell程序id。對於 shell 指令碼,就是這些指令碼所在的程序id。

Shell指令碼的使用

用途 shell是乙個命令列直譯器,為使用者提供乙個向linux核心傳送請求的系統及程式,使用者可使用shell執行啟動 掛起和停止一些程式。判斷檔案是否存在 if e 1 then echo 檔案存在 fi流程控制 bin bash if 條件判斷 then 程式elif 條件判斷 then 程式...

shell 指令碼的使用

使用source執行指令碼切換目錄才有效 source chdir.sh 關閉容器指令碼 刪除映象 docker rmi docker images q f dangling true 容器如果存在刪除容器 if docker ps aq filter name cicd demo then doc...

shell指令碼 tr的使用

通過使用tr,您可以非常容易地實現 sed 的許多最基本功能。您可以將 tr 看作為 sed的 極其 簡化的變體 它可以用乙個字元來替換另乙個字元,或者可以完全除去一些字元。您也可以用它來除去重複字元。這就是所有 tr所能夠做的。tr用來從標準輸入中通過替換或刪除操作進行字元轉換。tr主要用於刪除檔...