一、簡介
shell是一種指令碼語言,那麼,就必須有直譯器來執行這些指令碼。unix/linux上常見的shell指令碼直譯器有bash、sh、csh、ksh等,習慣上把它們稱作一種shell。我們常說有多少種shell,其實說的是shell指令碼直譯器。
二、基本介紹
1、學語言的經典」hello world!」
開啟文字編輯器,新建乙個檔案test.sh,擴充套件名為.sh(sh代表shell)。
輸入一些**:
#!/bin/bash
echo "hello world !"
在命令列執行:
chmod +x test.sh && ./test.sh
執行結果:
2、注釋
#!執行**(是乙個約定的標記,它告訴系統這個指令碼需要什麼直譯器來執行,即使用哪一種shell)
其他以#開頭注釋(一般有藍色區分),會被直譯器忽略。sh裡沒有多行注釋,只能每一行加乙個#號。
3、在命令列列印輸出
(1)echo:shell的乙個內部指令,用於在命令列螢幕上列印出指定的字串。
ps:echo後單引號和雙引號作用是不同的。單引號不能轉義裡面的字元。雙引號可有可無,單引號主要用在原樣輸出中。
例如:
(2)printf:格式化輸出語句。
printf 命令用於格式化輸出, 是echo命令的增強版。它是c語言printf()庫函式的乙個有限的變形,並且在語法上有些不同。
如同 echo 命令,printf 命令也可以輸出簡單的字串:
printf 不像 echo 那樣會自動換行,必須顯式新增換行符(\n)。
4、命令列從輸入裝置讀入內容
#!/bin/bash
echo "what is your name?"
read name #輸入
echo "你好, $name"
執行指令碼:
三、變數定義
1、定義變數
格式:變數=值 (預設變數型別是字元型別) abc=123
ps:等號兩邊不能有空格,對同一變數名定義,以最後一次定義的值生效
(1)檢視已定義的變數-set
abc=123
set | grep abc
(2)變數命名規則:
2、使用變數
使用乙個定義過的變數,只要在變數名前面加美元符號($)即可,如:$變數名
abc=123
echo $abc
3、刪除變數-unset
變數被刪除後不能再次使用;unset 命令不能刪除唯讀變數。
四、變數型別
1、區域性變數:
(1)區域性變數在指令碼或命令中定義
(2)僅在當前shell例項中有效
(3)其他shell啟動的程式不能訪問區域性變數
2、系統環境變數:
(1)系統啟動時載入系統配置檔案或服務的配置檔案
(2)在檔案中定義的所用使用者都可以呼叫
(3)變數名是固定的,值可以被修改
(4)在寫指令碼時,系統環境變數可以直接被使用或者重新賦值
(5)env 檢視當前所有已經定義的系統環境變數
(6)系統環境變數名一般是大寫
3、shell預定義變數(特殊變數):
在使用的shell(/bin/bash)已經定義好的變數,變數名和變數值都不可以被修改,變數值根據當前的執行環境,隨機獲取的。
(1)$0 當前終端執行程序的程序名 當前執行指令碼
(2)$n 傳遞給指令碼或函式的引數
n 是乙個數字,表示第幾個引數。例如,第乙個引數是$1,第二個引數是$2
(3)$! 當前終端後台執行最後執行程序的pid號
(4)$$ 當前終端執行程序的pid號
(5)$# 指令碼或函式位置變數的總個數
(6)$* 指令碼或函式所有位置變數的值
(7)$? 上一條命名執行後的返回狀態
echo $? 0 表示上條命令執行正確 非0 表示上條命令執行不正確
例子:
[root@ecloud ~]# cat test3.sh
#!/bin/bash
echo "the firiet name: $0"
echo "the first parameter : $1"
echo "the second parameter : $2"
echo "quoted values 1: $*"
echo "total number of parameters : $#"
echo "this pid : $$"
echo "return results :$?"
執行的結果如下:
Linux shell指令碼 (二)shell變數
shell支援自定義變數。定義變數時,變數名不加美元符號 如 variablename value 注意,變數名和等號之間不能有空格,這可能和你熟悉的所有程式語言都不一樣。同時,變數名的命名須遵循如下規則 變數定義舉例 myname wenong mynum 100 myname wenong ec...
linux shell指令碼特殊變數用法
shell本身的pid processid shell最後執行的後台process的pid 最後執行的命令的結束 返回值 使用set命令設定的flag一覽 所有引數列表。如 用 括起來的情況 以 1 2 n 的形式輸出所有引數。所有引數列表。如 用 括起來的情況 以 1 2 n 的形式輸出所有引數。...
Linux Shell指令碼應用 使用變數
1 變數基本操作 定義及賦值 格式 變數名 變數值例如 title beidaqingniao 引用 變數名 例如 echo title 2 雙引號 單引號 反撇號 雙引號 允許變數引用 轉義 單引號 禁止引用 單引號之中的 符號,不會去反向找變數的值,字面列印 轉義 就是它本身 反撇號 數字1左側...