shell基礎內容

2021-08-22 02:19:33 字數 2386 閱讀 1735

shell語法

自動化運維 專案部署

1、什麼是shell

shell就是乙個命令直譯器,實際就是乙個程式,/bin/bash,還有自己的語法

2、注釋

單行注釋 : #

多行注釋 : :《字元 ... 字元

3、執行方式

bash /path/to/script-name  或   /bin/bash /path/to/script-name    (強烈推薦使用)

/path/to/script-name   或  ./script-name    (當前路徑下執行指令碼)

source script-name  或  . script-name    (注意「.「點號後面有空格)

source執行指令碼時,不會開啟開啟新的程序,能與當前終端共享環境,前兩種方式都會開啟新的程序執行指令碼(重點)

4、變數

普通變數

數字:age=123

其他:name="wang"  如果雙引號裡面有變數,會解析

命令變數

1、變數名=`命令`

2、變數名=$(命令)

把命令執行的結果交給變數

5、全域性變數

定義全域性變數

方法一:

變數名=值

export 變數

方法二:(最常用)

export 變數名=值

如果直接在終端定義,只能在當前終端以及子程序中使用

如果想要自己定義的全域性變數在跟系統的全域性變數一樣在所有環境都有效,需要在~/.bashrc或/etc/profile檔案中定義:

修改~/.bashrc後,直接開啟新的終端,定義的全域性變數就生效了,此方式只對當前使用者有效

修改/etc/profile時,需要重啟作業系統,定義的全域性變數才生效,此方式對所有使用者有效

上面兩種方式在修改檔案後,如果想讓全域性變數在當前終端生效,需要執行命令source ~/.bashrc或source /etc/profile

6、內建變數(重點)

$0    獲取當前執行的shell指令碼檔名

$$    獲取執行shell指令碼的程序號

$n    獲取當前執行的shell指令碼的第n個引數值,n=1..9,當n為0時表示指令碼的檔名,如果n大於9就要用大括號括起來$

$#    獲取當前shell命令列中引數的總個數

$?    獲取執行上乙個指令的返回值(0為成功,非0為失敗),如果是執行指令碼,返回的是指令碼中最後一條命令的結果

7、預設值

​ 變數a如果沒有內容,那麼就輸出預設的內容

​ 格式:

$場景二:

​ 無論變數a是否有內容,都輸出預設值

​ 格式:

$8、表示式(重點)

測試語句

[ 1 = 1 ] :括號左右必須有空格,符號左右必須有空格

echo $? 獲取結果,0是成功,非0失敗

條件表示式

&&符號

命令1 && 命令2

如果命令1執行成功,那麼執行命令2

如果命令1執行失敗,那麼不執行命令2

||符號

命令1 || 命令2

1 如果命令1執行成功,那麼不執行命令2

2 如果命令1執行失敗,那麼執行命令2

檔案表示式

-f 判斷輸入內容是否是乙個檔案

[ -f neizhi.sh ]

-d 判斷輸入內容是否是乙個目錄

-x 判斷輸入內容是否可執行

計算表示式

$(( 計算表示式 ))

let 計算表示式 

$((a+1))

let a=$a+1

9、重定向

命令》檔案

把命令返回的結果輸出到檔案

命名返回的結果有兩種,1代表正確的結果,2代表錯誤的結果

命令》檔案 2>&1   &:當成引用,把錯誤的結果輸出到正確結果同樣的位置

把命令執行返回的所有結果輸出到檔案中

10、linux四劍客

grep:查詢檔案內容

grep -nr key .

find:查詢檔案

find . -name "*py"

s:替換

a:行後追加

i:行前插入

d:刪除

sed -i '3s#sed#sed#2' set.txt 

把第3行的第2個sed改為sed

sed -i 's#sed#sed#g' set.txt 

把每一行的第所有sed改為sed

sed -i '1,3a\hello2' set.txt

在1到3行後都追加一行

sed -i '1i\hello2' set.txt

在1行前插入一行

sed -i '2d' set.txt

刪除第2行

Shell 檔案內容操作

讀取檔案的每一行內容並輸出 bin bash 方法1 while read line do echo line done a.txt 方法2 cat a.txt while read line do echo line done 方法3 for line in cat a.txt for line ...

Shell 基礎 shell 變數

變數中只能包含字母 數字 下劃線,不能以數字開頭 不能包含bash中的關鍵字 變數賦值時,變數和等號 之間不能有空格 yourname abc 注意變數和 之間不能有空格 使用變數時,需要在變數前加 使用 youname或 例子 新建檔案,檔案內容如下 yourname lisen 變數賦值 ech...

mysql內容 MySQL 基礎內容

建立資料庫 對於表的操作需要先進入庫 use 庫名 建立乙個名為 inana db 的資料庫,資料庫字元編碼指定為 utf8 create database inana db character set utf8 drop database inana db 刪除 庫名為samp db的庫 show...