SHELL指令碼基礎
什麼是SHELL
shell是一個命令直譯器,它在作業系統最外層,負責直接與使用者進行對話,把使用者輸入的命令交給作業系統,並將作業系統計算的結果輸出到螢幕反饋給使用者,這種對話方式可以是互動也可以是非互動的(比如後臺執行的服務)。
輸入的命令會被SHELL直譯器變成計算機能識別的二進位制程式給計算機
程式語言分類
- 低階語言
- 高階語言
低階語言
機器語言:二進位制語言
組合語言:符號語言,使用助記符來代替操作碼,也就是用符號代替機器語言的二進位制碼。
它們都是面向機器的語言
高階語言
它是比較接近自然語言或者說人類語言的一種程式設計,用人們能夠容易理解的方式進行編寫程式。
靜態語言:編譯型語言
動態語言:解釋型語言如: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