Shell指令碼學習筆記

2021-10-03 08:38:07 字數 2703 閱讀 4044

本是最近在學習elastic search,但是每次啟動乙個集群環境的時候,需要執行繁瑣的命令,於是補了下shell指令碼,編寫個簡單的shell指令碼用於一鍵啟動我的集群環境,方便自己的學習。以下是在學習過程中的一些個人筆記。

個人編寫的指令碼案例可以參見博文-----《編寫elastic search+kibana單機集群環境啟停指令碼》

在一般情況下,人們並不區分 bourne shell 和 bourne again shell,指令碼開頭必須是#! /bin/sh或者**#! /bin/bash**

直接變數名等於即可。如num=10,這就定義乙個變數明為num,並賦值為10

用於接收使用者輸入的變數read num,這就定義了乙個num變數用於接收使用者輸入的值

類似於常用的tomcat啟動指令./catalina start,這裡的catalina實際就是乙個sh指令碼,start就是預設引數,在指令碼檔案中直接用$0$1$2來使用,這裡$0表示的是catalina指令碼本身的名字,$1$2則是跟在執行指令碼後的引數

num=10

readonly num

變數的使用,只需要在變數的前面加上關鍵字**$**。變數名外面的花括號是可選的,加不加都行,加花括號是為了幫助直譯器識別變數的邊界。比方說在拼接字串的時候,如下:

read num

echo

"input num is $."

if-else
# if-lese

if[ -e $datapath

]then

echo

"$存在"

else

echo

"$不存在"

fi

if-else-if
# if-lese

if[ -e $datapath

]then

echo

"$存在"

elif

[ -w $datapath

]echo

"$可以寫"

fi

while
num=10

while

(($num >1))

doecho

$num

let"num--"

done

for迴圈
for loop in 1 2 3 4 5

doecho

"the value is: $loop"

done

運算子

說明備註+加法

-減法*懲罰

/除法%取餘

=賦值==相等

!=不相等

運算子說明

備註-eq

==-ne

!=-gt

>

-lt<

-ge>=

-le<=

運算子說明備註!

非-oor-a

and&&

and||

or運算子

說明示例(ps:注意中括號表示式內的空格)

-z判斷字串長度是否為0,為0返回true

[ -z $a ]

-n檢測字串長度是否為0,為0返回 false。

[ -n $a ]

$檢測字串是否為空,不為空返回 true。

[ $a ]

運算子說明

示例(ps:注意中括號表示式內的空格)

-b檢測檔案是否是塊裝置檔案,如果是,則返回 true。

[ -b $file ] 返回true

-c檢測檔案是否是字元裝置檔案,如果是,則返回 true。

略,用法同上

-d檢測檔案是否是目錄,如果是,則返回 true。

略,用法同上

-f檢測檔案是否是普通檔案(既不是目錄,也不是裝置檔案),如果是,則返回 true。

略,用法同上

-g檢測檔案是否設定了 sgid 位,如果是,則返回 true。

略,用法同上

-k檢測檔案是否設定了粘著位(sticky bit),如果是,則返回 true。

略,用法同上

-p檢測檔案是否是有名管道,如果是,則返回 true。

略,用法同上

-u檢測檔案是否設定了 suid 位,如果是,則返回 true。

略,用法同上

-r檢測檔案是否可讀,如果是,則返回 true。

略,用法同上

-w檢測檔案是否可寫,如果是,則返回 true。

略,用法同上

-x檢測檔案是否可執行,如果是,則返回 true。

略,用法同上

-s檢測檔案是否為空(檔案大小是否大於0),不為空返回 true。

略,用法同上

-e檢測檔案(包括目錄)是否存在,如果是,則返回 true。

略,用法同上

-s判斷某檔案是否 socket。

略,用法同上

-l檢測檔案是否存在並且是乙個符號鏈結。

略,用法同上

shell指令碼學習筆記

學習筆記 1,檔案名字命名為 sh,字尾sh表明這是乙個bash指令碼檔案 2,shell指令碼的第一行如下 bin sh bin sh告訴系統其後路徑所指定的程式即是解釋此指令碼檔案的shell程式 3,寫完指令碼後儲存檔案,然後將檔案變成可執行檔案 chmod x test.sh 4,以下是乙個...

Shell指令碼學習筆記

find 命令 1.基於檔名或者正規表示式搜尋 例子 匹配多個條件 find name txt o name pdf print 找到當前目錄中所有txt pdf檔案輸出 加 o 表示or條件 將中間部分視為乙個整體 find regex py sh regex 基於正規表示式匹配 2.基於目錄深度...

Shell指令碼 學習筆記

編寫輸出hello world的程式是入門的第一步 1.vim helloworld.sh 2.輸入 i 進入插入模式 開始寫指令碼 bin sh echo hello world 3.執行shell指令碼 chmod 0777 helloworld.sh 賦予執行許可權 helloworld.sh...