認識 Shell Script(2)
一般設置 Shell Script 常用在系統管理、自動化操作檔案、簡化指令寫法等,透過程式語言來減少瑣碎且麻煩的工作。改善操作系統的工作效率,絕對是雙手贊成使用!
簡單說好了,Shell Script 就是將 shell(bash)指令給寫進一個 Script(腳本),並搭配判斷、迴圈等使用,就稱之為 文件腳本。
寫成 Shell Script 的優點
- 自動化管理的重要依據
- 追蹤與管理系統的重要工作
- 簡單入侵偵測功能
- 連續指令單一化
- 簡易的資料處理
- 跨平台支援與學習歷程較短
echo
echo 是 bash 的指令,主要用在輸出字串或數值等。
1 | [root@localhost ~]# echo [參數] [字串] |
輸出一組字串。
1 | [root@localhost ~]# echo demo |
參數-n
不要在最後自動換行-e
出現特殊字元,特別加以處理。
特殊字元
特殊字元 | 說明 |
---|---|
\a | 發出警告聲 |
\b | 刪除前一個字符 |
\c | 最後不加上換行符號 |
\f | 換行但游標停在原來的位置 |
\n | 換行字串,游標停在行首 |
\r | 游標停在行首,不換行 |
\t | 插入tab 水平定位點 |
\v | 插入垂直定位點,與 \f 類似 |
\ | 兩個右斜線,無特殊意義 |
' | 無特殊意義的單引號,轉為普通文字 |
" | 無特殊意義的雙引號,轉為普通文字 |
字串內有\n 加上-e
做特別處理。
1 | [root@localhost ~]# echo "demo1\ndemo2\ndemo3" |
變數
變數是用來儲存「值」,像一個抽屜,可以存放各種值。變數分成兩種:
- 環境變數
- 自訂變數
「自訂變數」與「環境變數」使用上的最大不同,就是自訂變數有「使用範圍的限制」,環境變數到哪邊都可以使用,也就是全區域都可以使用,也可以說是「全域變數」。
但是在父程序中定義的「自訂變數」,並無法讓子程序使用。但若是在父程序中定義的「環境變數」或是系統中原本就有的環境變數,那此環境變數就可以在子程序中使用。在子程序中定義的變數基本上無法讓父程序使用,就算在子程序中定義環境變數,一樣無法在父程序中使用。
環境變數(全域)
什麼是環境變數?環境變數就是使用者操作環境的設定。
bash
提供了以下幾種變數,他們特點都是以大寫命名。
- $USER 目前使用者是誰。
- $HOME 使用者的家目錄。
- $HISTSIZE 儲存下過的指定清單的檔案位置。
- $PATH 分號分隔的一連串目錄,執行指令時的搜尋目錄。
- $SHELL 當前使用的 Shell 名稱。
- $MAIL 與收發 mail 有關係。
- $LANG 儲存使用者的語系。
- $RANDOM 產生亂數(介於0到32767之間)。
- $IFS 用來分隔欄位的字元清單。
- $UID 目前使用者 uid。
- PWD 目前所在目錄。
env
指令,查看所有的環境變數設定。
1 | [root@localhost ~]# env |
set
指令,查看所有的「自訂變數」及「環境變數」。
1 | [root@localhost ~]# set |
暫時修改變數設定,可以使用 export
指令。
將環境變數語言短暫設定成英文。
1 | [root@localhost ~]# export LANG=en_US |
環境變數語言短暫設定成中文
1 | [root@localhost ~]# export LANG=zh_TW.UTF-8 |
自訂變數(區域)
設定一個變數名稱,以等於符號=
指定要的值,可以是字串或數值。
1 | 變數名稱 = 指定的值 |
設置名稱為 msg
的變數,變數值為「信件發送成功」。
1 | [root@localhost ~]# msg="信件發送成功" |
read
指令可以讀取變數,會停在指令下,可以自行輸入變數值。
1 | [root@localhost ~]# read msgerror |
比較運算式
bash 提供了一個指令 test
可用來測試多種情況的狀態。
檔案測試
結果
- 1 等於
false
- 0 等於
true
測試 edm.php
是否為目錄?
1 | [root@localhost ~]# ls -l edm.php |
變數測試
測試變數長度是否大於1。
1 | [root@localhost ~]# ex="我是Sian" |
數字比對
測試變數是否相等。
1 | [root@localhost ~]# y=5 |
標籤: w3HexSchool
LINUX
原文作者: Sian
原文鏈接: https://dew31794.github.io/2020/10/25/認識 Shell Script(2)/
版權聲明: 轉載請註明出處(必須保留作者署名及鏈接)