1. 程式人生 > 實用技巧 >SHELL指令碼基礎

SHELL指令碼基礎

什麼是SHELL

shell是一個命令直譯器,它在作業系統最外層,負責直接與使用者進行對話,把使用者輸入的命令交給作業系統,並將作業系統計算的結果輸出到螢幕反饋給使用者,這種對話方式可以是互動也可以是非互動的(比如後臺執行的服務)。

輸入的命令會被SHELL直譯器變成計算機能識別的二進位制程式給計算機

程式語言分類

  • 低階語言
  • 高階語言

低階語言

機器語言:二進位制語言

組合語言:符號語言,使用助記符來代替操作碼,也就是用符號代替機器語言的二進位制碼。

它們都是面向機器的語言

高階語言

它是比較接近自然語言或者說人類語言的一種程式設計,用人們能夠容易理解的方式進行編寫程式。

靜態語言:編譯型語言

如:c c++ java

動態語言:解釋型語言如:php shell python perl


什麼是shell指令碼

我們把原來linux命令或語句放在一個檔案中,然後通過這個程式檔案去執行時,就被稱為shell指令碼;

vim test.sh

內容如下

#!/bin/bash
#This is shell.
ehco "hello world"
mkdir /tmp/test
touch /tmp/test/a.txt

新增執行許可權

chmod +x test.sh

shell指令碼的執行通常有以下幾種方式

1、/root/test.sh 或者 ./test.sh (當前路徑下執行指令碼的話要有執行許可權chmod +x test.sh)

2、bash test.sh 或 sh test.sh (這種方式可以不對指令碼檔案新增執行許可權)

3、source test.sh (可以沒有執行許可權)

4、sh < test.sh 或者 cat test.sh |sh(bash)

SHELL變數

變數設定規則

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

2、等號 = 用於為變數分配值,在使用過程中等號兩邊不能有空格

3、變數儲存的資料型別是整數值和字串值

4、在對變數賦於字串值時,建議大家用引號將其括起來。因為如果字串中存在空格隔符號。需要使用單引號或雙引號

5、要對變數進行呼叫,可以在變數名稱前加美元符號

$

6、如果需要增加變數的值,那麼可以進行變數值的疊加。不過變數需要用雙引號包含“$變數名或用${變數名}包含

變數的分類

1、使用者自定義變數

2、環境變數:這種變數中主要儲存的是和系統操作環境相關的資料。

3、位置引數變數:這種變數主要是用來向腳本當中傳遞引數或資料的,變數名不能自定義,變數作用是固定的。

4、預定義變數:是Bash中已經定義好的變數,變數名不能自定義,變數作用也是固定的。

按照變數作用域可以分成2類:全域性變數區域性變數。

區域性變數是shell 程式內部定義的,其使用範圍僅限於定義它的程式,對其它程式不可見。包括:使用者自定義變數、位置變數和預定義變數。

全域性變數是環境變數,其值不隨shell 指令碼的執行結束而消失。

例:變數值的疊加,使用${}

$name是${name}的簡化版本,但是在某些情況下,還必須使用花括號引起的方式來消除歧義並避免意外的結果

[root@tzPC ~]# VAR4=mysql
[root@tzPC ~]# echo $VAR4
mysql
[root@tzPC ~]# echo $VAR4-db.log
mysql-db.log
[root@tzPC ~]# echo $VAR4db.log  #發現輸出的結果不是我們想要的,怎麼辦?
.log
[root@tzPC ~]# echo ${VAR4}db.log
mysqldb.log