shell指令碼(一)

2021-10-01 11:24:31 字數 2374 閱讀 9329

shell

1.概述

shell是乙個命令列直譯器,它接收應用程式/使用者命令,然後呼叫作業系統核心

還是乙個功能相當強大的程式語言,易編寫.易除錯.靈活性強

2.shell解析器

檢視linux提供的shell解析: cat /etc/shells

sh和 bash是常用的 bash包含了其他的功能,進行了重新編寫

檢視預設解析器:echo $shell (centos預設的解析器是bash)

3.shell 指令碼入門

3.1指令碼格式

指令碼為 #!/bin/bash 開頭 (指定的解析器)

建立指令碼 touch 指令碼名.sh

例如:建立指令碼並在指令碼中輸入helloworld

touch helloworld.sh

vi helloworld .sh

#!/bin/bash

echo 「helloworld」

3.2指令碼的常用執行方式

1.sh+指令碼的相對路徑

例:sh helloworld.sh

2.sh+指令碼絕對路徑

例:sh /home/bxg/helloworld.sh

3.bash+指令碼的相對路徑

例:bash helloworld.sh

4.bash+指令碼的絕對路徑

例:bash /home/bxg/helloworld.sh

3.3 高階版 採用輸入指令碼的絕對路徑或相對路徑執行指令碼(前提是必須具有可執行許可權+x,推薦採用這種方式)

第一步 :賦予helloworld.sh 指令碼 的+x許可權

例:chmod +x helloworld.sh

第二步:執行

例:./helloworld.sh

注意:第一種方法本質是bash解析器幫你執行指令碼,所以指令碼本身並不需要執行許可權。

第二種執行方式本質是指令碼需要自己執行,所以需要執行許可權。

3.4 多命令處理

需求:在home/bxg/目錄下建立乙個a.txt ,在a.txt檔案中增加nihao

例:touch batch.sh 建立指令碼

vi batch.sh 編輯指令碼

#!/bin/bash 規定開頭

cd/home/bxg

touch a.txt

echo 「nihao」 >>a.txt

3.5 檢視指令碼的執行流程(一般用來檢視指令碼執行的步驟,錯誤)

bash -x batch.sh

3.6 檢視指令碼的語法(一般使用這個命令檢視指令碼語法錯誤)

bash -n batch.sh

4 shell中的變數

4.1系統變數

常用的有$home $pwd $shell $user 等

例:1檢視系統變數的值 echo $home

2 顯示當前shell中所有變數 set

4.2 自定義變數

4.2.1.語法

定義變數:變數=值 中間不能有空格

撤銷變數:unset 變數

宣告靜態變數:readonly 變數 這個變數只能讀,不能修改或者撤銷

4.2.2規則

變數名稱可以由字母/數字和下劃線組成,但是不能以數字開頭,環境變數名建議大寫

等號兩側不能有空格

在bash中,變數預設型別都是字串型別,無法直接進行數值運算。

變數的值如果有空格,需要用雙引號或單引號括起來。

例:定義變數a a=5

檢視變數 $a

重新賦值 a=3

撤銷變數a unset a

宣告靜態變數b readonly b=2

變數無法進行數值計算

變數的值如果有空格,需要使用雙引號或單引號括起來

4.2.3把變數提公升為全域性環境變數 可供其他shell程式使用

export + 變數名

4.3 特殊變數

4.3.1 $n

n 功能

:n為數

字,

n 功能:n為數字,

n功能:n為

數字,n代表該指令碼名稱,$1-$9代表第一到第九個引數, 十以上的引數需要用大括號包含

例:4.3.2$#

$# 功能:獲取所有輸入引數個數,常用於迴圈

4.3.3$* $@

∗ 功能

:代表命

令行中所

有的引數

,* 功能:代表命令列中所有的引數,

∗功能:代表

命令列中

所有的參

數,*把所有的引數看成乙個整體

@ 功能

:功能一

樣,但是

@ 功能:功能一樣,但是

@功能:功能

一樣,但

是@是把每個引數區分對待

shell指令碼一

shell 手工部署專案 自動化部署專案 1 shell簡介 什麼是shell shell是乙個命令直譯器,是乙個程式 bin bash,解釋linux的命令 shell互動式命令使用 開啟終端,一行行敲命令 shell指令碼 一系列的命令組成的檔案,結合shell語法 shell指令碼注釋 1 單...

Shell指令碼 一

1.特殊變數 1 2 表示指令碼後接的引數值 引數的數量 所有引數 0 指令碼名 程序號 退出碼2.條件判斷 2.1.if elif else語句 bin bash if condition1 condition2 then text1 elif condition3 then text2 else...

shell指令碼(一)

1 列印九九乘法表 root centos7 scripts vim 99chengfb.sh bin bash for i in do for j in seq 1 i do for j in eval echo do for j in eval echo do result j i echo e...