Linux必須掌握的shell指令碼基礎
1. shell 基本語法
shell:
shell 是一個命令直譯器,它在作業系統的最外層,負責直接與使用者進行對話,把使用者的輸入解釋給作業系統,並處理各種各樣的作業系統的輸出結果,輸出到螢幕反饋給使用者。
什麼是 shell 指令碼:
把 Linux 命令或語句放在一個檔案中,透過這個程式檔案去執行,這個程式為 shell 指令碼或 shell 程式;可以在指令碼中輸入系統的命令以及相關的語法語句組合,比如變數,流程控制語句等,把他們有機結合起來就形成了一個功能強大的 shell 指令碼。
建立 shell 程式的步驟:
(1)建立一個包含命令和控制結構的檔案,vim first.sh
(2)修改這個檔案的許可權使它可以執行,chmod +x first.sh
(3)檢測語法錯誤;
(4)執行指令碼。
執行 shell 指令碼的方式:
(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(可以不新增可執行許可權)
初識 shell 指令碼:
#!/bin/bash
# it is a shell!
echo "hello world!"
# 第一行:命令直譯器型別
# 第二行:註釋資訊
2. shell 變數及運用
變數設定規則:
(1)變數名稱通常是大寫字母,可以由數字、字母(大小寫)和下劃線組成。變數名區分大小寫,不能以數字開頭;
(2)a=10,= 的作用是賦值,= 兩邊不能有空格;
(3)變數儲存的資料型別是整數型和字串型;
(4)字串型建議加引號。如果字串中有空格,要用單引號‘’或雙引號“”包含起來;
(5)變數呼叫時,在變數前加 $,$a;
(6)如果需要增加變數的值,可以進行變數值的疊加。變數需要用雙引號包含“$變數名”或用${變數名}包含。
變數的分類:
按照變數的作用劃分:
(1)使用者自定義變數(字母或下劃線開頭,不能以數字開頭)
(2)環境變數:儲存和系統操作環境相關的資料
(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
3. 數學運算
expr 命令:
(1)對數字的基本計算;做比較時,輸出結果為假時為0,1為真;特殊符號用轉義符
(2)對字串的處理
$(()):
運算子
意義
++ --
遞增 遞減
+ - !~
正 負 邏輯與取反
+ - * / %
加 減 乘 除 餘數
< <= > >=
比較大小
== !=
相等 不相等
>> <<
向左位移 向右位移
& ^ |
按位的與 按位的異或 按位的或
&& ||
邏輯與 邏輯或
?:
條件判斷
計算從1加到100的值:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2679254/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux基礎五(shell指令碼)Linux指令碼
- Linux shell 指令碼基礎介紹Linux指令碼
- 誰來教我滲透測試——黑客必須掌握的Linux基礎黑客Linux
- Linux Shell指令碼程式設計-基礎1Linux指令碼程式設計
- 外貿小白必須掌握的基礎知識
- 【Linux學習筆記29】shell指令碼基礎Linux筆記指令碼
- shell指令碼的基礎知識指令碼
- Shell指令碼程式設計規範與變數(shell指令碼必須要知道的規矩!)指令碼程式設計變數
- 必須掌握的10個Linux命令!Linux
- 學習Linux必須掌握的命令!Linux
- shell程式設計必須要掌握的命令-xargs程式設計
- 小白學Web前端必須掌握的4項基礎技能!Web前端
- 必須掌握的Linux使用者組Linux
- Linux Shell指令碼Linux指令碼
- 34 個 常用 Linux Shell 指令碼,運維必備!Linux指令碼運維
- Linux系統中必須掌握的特殊字元!Linux字元
- linux常用的shell指令碼Linux指令碼
- Linux_day06_01_Shell指令碼程式設計_Bash基礎Linux指令碼程式設計
- 入門Salesforce:必須掌握的20+基礎專業術語!Salesforce
- 必須掌握的Linux使用者組知識Linux
- 學習Linux必須掌握的命令!經驗分享Linux
- 深入C++02:深入學習C++還必須掌握的基礎C++
- 誰來教我滲透測試——黑客必須掌握的HTML基礎(一)黑客HTML
- linux shell指令碼中 =~ 的作用Linux指令碼
- 為什麼要有Shell指令碼註釋?linux系統開發基礎指令碼Linux
- Git中~你必須掌握的!Git
- Linux shell:執行shell指令碼的幾種方式Linux指令碼
- Linux shell基礎3Linux
- Linux shell基礎1Linux
- Linux shell基礎2Linux
- 【Linux常用命令①】程式設計師必須掌握的Linux命令Linux程式設計師
- Linux 【Shell指令碼經典案例】Linux指令碼
- 【Linux】【Shell】主控指令碼實現Linux指令碼
- 什麼是Shell指令碼?Shell指令碼在Linux運維工作中的地位!指令碼Linux運維
- 前端必須掌握的知識點前端
- CSS中那些必須掌握的概念CSS
- 必須要掌握的重要目錄
- 你必須知道的Java基礎知識Java