Shell極簡入門

2021-10-05 05:00:41 字數 4174 閱讀 3678

簡單shell案例

使用vim建立乙個檔案hello.sh

首行新增宣告,使用的是/bin目錄下的bash直譯器,因為linux有很多的直譯器

#!/bin/bash

然後新增上一句

echo hello

按: ,輸入wq 儲存退出

為檔案新增可執行許可權

控制台輸入以下內容

chmod +x hello.sh

執行: ./hello.sh

即可輸出hello

注釋

當行注釋:# 內容

多行注釋:

:<<

! 內容

!

shell的變數

shell的變數的介紹

1.linux shell中的變數分為,系統變數和使用者自定義變數。

2.系統變數:$home、$pwd、$shell、$user等等

比如: echo $home 等等…

3.顯示當前shell中所有變數:set

shell變數的定義

4.取出變數使用 $

n=90

echo $n

基本語法

1.定義變數:變數=值

2.撤銷變數:unset 變數

3.宣告靜態變數:readonly變數,注意:不能unset

shell變數的定義

定義變數的規則

1.變數名稱可以由字母、數字和下劃線組成,但是不能以數字開頭。

2.等號兩側不能有空格

3.變數名稱一般習慣為大寫

將命令的返回值賦給變數

1.a=`ls -la` 反引號,執行裡面的命令,並把結果返回給變數a

2.a=$(ls -la) 等價於反引號

設定環境變數

基本語法

1.export 變數名=變數值 (功能描述:將shell變數輸出為環境變數)

2.source 配置檔案 (功能描述:讓修改後的配置資訊立即生效,或者重啟機器、登出)

3.echo $變數名 (功能描述:查詢環境變數的值)

位置引數變數

介紹當我們執行乙個shell指令碼時,如果希望獲取到命令列的引數資訊,就可以使用到位置引數變數。

比如 : ./myshell.sh 100 200 , 這個就是乙個執行shell的命令列,可以在myshell 指令碼中獲取到引數資訊

基本語法

1.$n(功能描述:n為數字,$0代表命令本身,$1-$9代表第一到第九個引數,十以上的引數,十以上的引數需要用大括號包含,如$

2.$*(功能描述:這個變數代表命令列中所有的引數,$* 把所有的引數看成乙個整體)

3.$@(功能描述:這個變數也代表命令列中所有的引數,不過$@把每個引數區分對待)

4.$#(功能描述:這個變數代表命令列中所有引數的個數)

預定義變數

基本介紹

就是shell設計者事先已經定義好的變數,可以直接在shell指令碼中使用

基本語法

$$ (功能描述:當前程序的程序號(pid))

$! (功能描述:後台執行的最後乙個程序的程序號(pid))

$? (功能描述:最後一次執行的命令的返回狀態。如果這個變數的值為0,證明上乙個命令正確執行;如果這個變數的值為非0(具體是哪個數,由命令自己來決定),則證明上乙個命令執行不正確了。)

運算子基本介紹

學習如何在shell中進行各種運算操作。

基本語法

1.「$((表示式))」或「$[表示式](推薦使用)」

2.expr m + n

注意expr運算子間要有空格

3.expr m - n

4.expr \*, /, % 乘,除,取餘

條件判斷

判斷語句

基本語法

[ condition ](注意condition前後要有空格)
#非空返回true,可使用$?驗證(0為true,>1為false)

判斷語句

• 常用判斷條件

兩個整數的比較

= 字串比較

-lt 小於

-le 小於等於

-eq 等於

-gt 大於

-ge 大於等於

-ne 不等於

按照檔案許可權進行判斷 -r 有讀的許可權

-w 有寫的許可權

-x 有執行的許可權

3)按照檔案型別進行判斷 -f 檔案存在並且是乙個常規的檔案

-e 檔案存在

-d 檔案存在並是乙個目錄

流程控制

if 判斷

基本語法

if[ 條件判斷式 ]

;then

#注意空格

程式fi

或者

if

[ 條件判斷式 ]

#注意空格

then

程式elif

[條件判斷式]

then

程式else

程式fi

流程控制

case語句

基本語法

case $變數名 in

"值1")

如果變數的值等於值1,則執行程式1 ;;

"值2")

如果變數的值等於值2,則執行程式2 ;;

…省略其他分支…

*)如果變數的值都不是以上的值,則執行此程式;;

esac

for迴圈

基本語法1

for 變數 in 值1 值2 值3… 

do 程式

done

基本語法2

for

(( 初始值;迴圈控制條件;變數變化 ))

do 程式done

while迴圈

基本語法1

while

[ 條件判斷式 ]

#注意空格

do 程式

done

read讀取控制台輸入

基本語法

read(選項)(引數) 選項:

-p:指定讀取值時的提示符;

-t:指定讀取值時等待的時間(秒),如果沒有在指定的時間內輸入,就不再等待了。。

引數變數:指定讀取值的變數名

#輸入乙個數字,限時3秒

read -t 3 -p "input" num

echo

$num

函式

函式介紹

shell程式設計和其它程式語言一樣,有系統函式,也可以自定義函式。

系統函式

basename基本語法

功能:返回完整路徑最後 / 的部分,常用於獲取檔名

basename [pathname] [suffix]

basename [string] [suffix]

(功能描述:basename命令會刪掉所有的字首包括最後乙個(『/』)

字元,然後將字串顯示出來。

選項:suffix為字尾,如果suffix被指定了,basename會將pathname或string中的suffix去掉

>

basename /home/shell/nono.sh .sh

> nono

dirname基本語法

功能:返回完整路徑最後 / 的前面的部分,常用於返回路徑部分

dirname 檔案絕對路徑 (功能描述:從給定的包含絕對路徑的檔名中去除檔名(非目錄的部分),然後返回剩下的路徑(目錄的部分))

>

dirname /home/shell/nono.sh

> /home/shell

函式 自定義函式

基本語法

function funname(

)

呼叫直接寫函式名:funname [值]

Shell 極簡教程

vim hello world.sh bin bash echo hello world chmod x sh hello world.sh hello,world bin bash echo hello,world a 1b expr a 1 echo b注意,變數名和等號之間不能有空格,這可能和...

Docker極簡入門

我有幾張阿里雲幸運券分享給你,用券購買或者公升級阿里雲相應產品會有特惠驚喜哦!把想要買的產品的幸運券都領走吧!快下手,馬上就要搶光了。root chatdevops yum y install docker root chatdevops docker version docker version ...

django極簡入門

django極簡入門 i.安裝python環境 ii.安裝django pip install djangoiii.建立django專案資料夾 django admin startproject myprojectiv.在專案資料夾內,如myproject myproject,建立視 件,如view...