Bash Shell知識總結

2021-09-25 11:24:22 字數 4715 閱讀 6456

一、shell定義變數時,變數名不加美元符號,如:your_name=「rose」

變數名和等號之間不能有空格

命名只能使用英文本母,數字和下劃線,首個字元不能以數字開頭

中間不能有空格,可以使用下劃線(_)

不能使用標點符號

不能使用bash裡的關鍵字(最下方有關鍵字表)

符合條件的示例:

runoob

ld_path

_var

var2

二、使用乙個定義過的變數,只要在變數名前面加美元符號即可

your_name=「rose」

echo $your_name

echo $(括號可有可無)

三、已定義的變數,可以被重新定義

your_name=「rose」

echo $your_name

your_name=「jack」

echo $your_name

輸出結果是:

rose

jack

四、刪除變數:

使用unset命令可以刪除變數

unset variable_name

變數被刪除後不能再次使用,unset不能刪除唯讀變數

五、變數型別,執行shell時,會同時存在三種變數:

字串是shell程式設計中最常用最有用的資料型別,字串可以用單引號,也可以用雙引號,也可以不用引號。

一、獲取字串長度:

string=「abcd」

echo $

輸出結果:4

二、提取子字串:

string=「runnob is a great site」

echo $(string:1:4)

輸出結果:unno

(字元上方對應的是01234…,把1位置的字元當做第乙個,計數4個,返回)

三、查詢子字串:

查詢字元i或o的位置(哪個字元先出現就計算哪個)

string="runoob is a great site"

echo `expr index "$string" io`

輸出結果:4

一、讀取陣列元素:

valuen=$

二、使用@符號可以獲取陣列中所有元素:

echo $

三、獲取陣列長度:

length=$

length=$

四、()和{}的區別:

()表示在"nested sub-shell"中劃分乙個命令群組,如果我們希望裡面的命令對之前和之後的設定不影響的話,就要用(),反之,用{}。

例1:

$cat shell.sh; ./shell.sh

#! /bin/bash

line="123 25 36522"

(line="wwww"

echo "$line"

)echo "$line"

輸出結果:

wwww

123 25 36522

例2: $cat shell.sh; ./shell.sh

#! /bin/bash

line="123 25 36522"

echo "$line"

輸出結果:

wwww

wwww

假設定義了乙個變數為:

**如下:

file=/dir1/dir2/dir3/my.file.txt

可以用$分別替換得到不同的值:

$:刪掉第乙個 / 及其左邊的字串:dir1/dir2/dir3/my.file.txt

$:刪掉最後乙個 / 及其左邊的字串:my.file.txt

$:刪掉第乙個 . 及其左邊的字串:file.txt

$:刪掉最後乙個 . 及其左邊的字串:txt

$:刪掉最後乙個 / 及其右邊的字串:/dir1/dir2/dir3

$:刪掉第乙個 / 及其右邊的字串:(空值)

$:刪掉最後乙個 . 及其右邊的字串:/dir1/dir2/dir3/my.file

$:刪掉第乙個 . 及其右邊的字串:/dir1/dir2/dir3/my

記憶的方法為:

#是 去掉左邊(鍵盤上#在 $ 的左邊)

%是去掉右邊(鍵盤上% 在$ 的右邊)

單一符號是最小匹配;兩個符號是最大匹配

$:提取最左邊的 5 個位元組:/dir1

$:提取第 5 個位元組右邊的連續5個位元組:/dir2

也可以對變數值裡的字串作替換:

$:將第乙個dir 替換為path:/path1/dir2/dir3/my.file.txt

$:將全部dir 替換為 path:/path1/path2/path3/my.file.txt

shell 和其他程式語言一樣,支援多種運算子,包括:

具體參考:

關鍵字表

命令含義

!保留字,邏輯非

:不做任何事,只做引數展開

.讀取檔案並在shell中執行它

alias

設定命令或命令列別名

bg將作業置於後台執行

bind

將關鍵字序列與readline函式或巨集**

break

保留字,跳出for、while、until、select迴圈

builtin

呼叫命令的內建命令格式,而禁用同名的函式。或者同名的擴充套件命令

case

保留字,多重選擇

cd切換當前工作目錄

command

找出內建和外部命令;尋找內建命令而非同名函式

continue

保留字,到達下次for、while、until、select迴圈

declare

宣告變數定義變數屬性

dirs

顯示當前儲存的列表

disown

將作業從列表中移除

do保留字,for、while、until、select迴圈的一部分

done

保留字,for、while、until、select迴圈的一部分

echo

列印引數

elif

保留字,if結構的一部分

else

保留字,if結構的一部分

enable

開啟和關閉內建命令

esac

保留字,case的一部分

eval

將引數作為命令再次處理一遍

exec

以特定程式取代shell或為shell改變i/o

exit

退出shell

export

將變數宣告為環境變數

fc與歷史命令一起執行

fg將作業置於後台執行

fi保留字,if迴圈的一部分

function

定義乙個函式

for保留字,for迴圈的一部分

getops

處理命令列選項

hash

記錄並指定命令的路徑名

help

顯示內建命令的幫助資訊

history

顯示歷史資訊

if保留字,if迴圈的一部分

in保留字,case、for、select迴圈的一部分

jobs

顯示後台執行的作業

kill

向程序傳送訊號

let使變數執行算術運算

local

定義區域性變數

logout

從shell中登出

popd

從目錄棧中彈出目錄

pushd

將目錄壓入棧

pwd顯示當前工作目錄

read

從標準輸入中讀取一行

readonly

將變數定義為唯讀

return

從函式或指令碼返回

select

保留字,生成選單

set設定shell選項

shift

變換命令列引數

suspend

終止shell的執行

test

評估條件表示式

then

保留字,if結構的一部分

time

保留字,輸出統計出來的命令執行時間,其輸出格式由timeformat變數來控制

times

針對shell及其子shell,顯示使用者和系統cpu的時間和

trap

設定撲捉程式

type

確定命令的源

typeset

宣告變數,定義變數屬性,與declare等價

ulimit

設定和顯示程序占用的資源限制

umask

設定和顯示檔案許可權碼

unalias

取消別名定義

unset

取消變數或函式定義

until

保留字,一種迴圈結構

wait

等待後台作業完成

while

保留字,一種迴圈結構

bash shell指令碼執行方法總結

bash shell 指令碼的方法有多種,現在作個小結。假設我們編寫好的shell指令碼的檔名為hello.sh,檔案位置在 data shell目錄中並已有執行許可權。方法一 切換到shell指令碼所在的目錄 此時,稱為工作目錄 執行shell指令碼 cd data shell hello sh....

bash shell指令碼執行方法總結

bash shell 指令碼的方法有多種,現在作個小結。假設我們編寫好的shell指令碼的檔名為hello.sh,檔案位置在 data shell目錄中並已有執行許可權。方法一 切換到shell指令碼所在的目錄 此時,稱為工作目錄 執行shell指令碼 cd data shell hello sh ...

Bash Shell字串操作總結

1.取長度 str abcd expr length str 4echo 4expr str 4 一般使用第二種比較多 2.查詢子串的位置 str abc expr index str a 1 expr index str b 2 expr index str x 0 expr index str ...