shell 程式設計 shell 指令碼基礎

2021-08-27 03:48:44 字數 3100 閱讀 7180

shell 是乙個命令直譯器,它在作業系統的最外層,負責直接與使用者進行對話,把使用者的輸入解釋給作業系統,並處理各種各樣的作業系統的輸出結果,輸出到螢幕反饋給使用者。

把 linux 命令或語句放在乙個檔案中,通過這個程式檔案去執行,這個程式為 shell 指令碼或 shell 程式;可以在指令碼中輸入系統的命令以及相關的語法語句組合,比如變數,流程控制語句等,把他們有機結合起來就形成了乙個功能強大的 shell 指令碼。

(1)建立乙個包含命令和控制結構的檔案,vim first.sh

(2)修改這個檔案的許可權使它可以執行,chmod +x first.sh

(3)檢測語法錯誤;

(4)執行指令碼。

(1)通過絕對路徑執行,/root/first.sh(需要新增可執行許可權x)

(2)bash first.sh 或 sh first.sh(可以不新增可執行許可權)

(3)source first.sh(可以不新增可執行許可權,在當前 shell 執行)

(4)sh < cal.sh,cat cal.sh |sh,cat cal.sh |bash(可以不新增可執行許可權)

#!/bin/bash                

# it is a shell!

echo "hello world!"

# 第一行:命令直譯器型別

# 第二行:注釋資訊

(1)變數名稱通常是大寫字母,可以由數字、字母(大小寫)和下劃線組成。變數名區分大小寫,不能以數字開頭;

(2)a=10,= 的作用是賦值,= 兩邊不能有空格;

(3)變數儲存的資料型別是整數型和字串型;

(4)字串型建議加引號。如果字串中有空格,要用單引號'或雙引號"包含起來;

(5)變數呼叫時,在變數前加 $,$a;

(6)如果需要增加變數的值,可以進行變數值的疊加。變數需要用雙引號包含"$變數名"或用$包含。

按照變數的作用劃分:

(1)使用者自定義變數(字母或下劃線開頭,不能以數字開頭)

(3)位置引數變數:向指令碼中傳遞引數或資料的,變數名不能自定義,變數的作用是固定的

(4)預定義變數:是 bash 中已經定義好的變數,變數名不能自定義,變數的作用是固定的

按照變數的作用域劃分:

(1)全域性變數:環境變數,值不隨 shell 指令碼的執行結束而消失,值傳遞給子 shell 而不傳遞給父 shell

env 命令檢視所有全域性變數:

export 宣告全域性變數:

新增環境變數:

(2)區域性變數:shell 程式內部定義的,使用範圍僅限於定義它的程式。包括使用者自定義變數、位置變數和預定義變數

使用 $() 或反引號。echo $(pwd)

或echo `pwd`

使用 $($())

在單引號中,所有的字元(包括特殊字元)都將解釋成字元本身成為普通字元;

在雙引號中,除了 $、'' 和 \ 以外所有的字元都解釋成字元本身。

unset 變數名:刪除變數

/etc/profile:系統全域性環境和登陸系統的一些配置

/etc/bashrc:shell 全域性自定義配置檔案,用於自定義 shell

/root/.bashrc:用於自定義某個使用者的 bash

/root/.bash_profile:使用者單獨自定義某個使用者的系統環境

插入永久變數:(1)vim /etc/profile;(2)在最後一行寫入 export var8=100,儲存並退出;(3)source /etc/profile

$*以乙個單字串顯示所有向指令碼傳遞的引數

$#傳遞到指令碼的引數的個數

$$當前程序的程序號 pid

$?顯示最後命令的退出狀態;0表示沒有錯誤,其他值都表示有錯誤

$!後台執行的最後乙個程序的程序號 pid

(1)對數字的基本計算;做比較時,輸出結果為假時為0,1為真;特殊符號用轉義符

(2)對字串的處理

運算子意義

++   --

遞增   遞減

+   -   !~

正   負   邏輯與取反

+   -   *   /   %

加   減   乘   除   餘數

>=

比較大小

==   !=

相等   不相等

>>   <<

向左位移   向右位移

&   ^   |

按位的與   按位的異或   按位的或

&&   ||

邏輯與   邏輯或

?:條件判斷

計算從1加到100的值:

Shell程式設計基入門

shell是乙個命令直譯器,他的作用就是解釋執行使用者輸入的命令和程式,使用者輸入一條命令,它就執行一條,就可以立即得到回應的對話方式被稱為 互動 shell存在於作業系統的最外層,負責與使用者直接對話,把使用者輸入的命令解釋給作業系統,並處理各式各樣的作業系統的輸出結果,然後輸出到明明返回給使用者...

Shell 指令碼程式設計

1 執行shell的方法 指定shell bin sh 由sh執行指令碼 指令碼總是由sh解釋 顯示呼叫shell sh scriptname 在當前shell中執行指令碼 profile profile是可執行的 ksh profile profile是不可執行的 改變當前的執行環境責應輸入.pr...

Shell 指令碼程式設計

a file 如果 file 存在則為真。b file 如果 file 存在且是乙個塊特殊檔案則為真。c file 如果 file 存在且是乙個字特殊檔案則為真。d file 如果 file 存在且是乙個目錄則為真。e file 如果 file 存在則為真。f file 如果 file 存在且是乙個...