shell 是乙個命令直譯器,它在作業系統的最外層,負責直接與使用者進行對話,把使用者的輸入解釋給作業系統,並處理各種各樣的作業系統的輸出結果,輸出到螢幕反饋給使用者。
把 linux 命令或語句放在乙個檔案中,通過這個程式檔案去執行,這個程式為 shell 指令碼或 shell 程式;可以在指令碼中輸入系統的命令以及相關的語法語句組合,比如變數,流程控制語句等,把他們有機結合起來就形成了乙個功能強大的 shell 指令碼。(1)建立乙個包含命令和控制結構的檔案,vim first.sh
(2)修改這個檔案的許可權使它可以執行,chmod +x first.sh
(3)檢測語法錯誤;
(4)執行指令碼。
(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(可以不新增可執行許可權)
#!/bin/bash
# it is a shell!
echo "hello world!"
# 第一行:命令直譯器型別
# 第二行:注釋資訊
(1)變數名稱通常是大寫字母,可以由數字、字母(大小寫)和下劃線組成。變數名區分大小寫,不能以數字開頭;
(2)a=10,= 的作用是賦值,= 兩邊不能有空格;
(3)變數儲存的資料型別是整數型和字串型;
(4)字串型建議加引號。如果字串中有空格,要用單引號'或雙引號"包含起來;
(5)變數呼叫時,在變數前加 $,$a;
(6)如果需要增加變數的值,可以進行變數值的疊加。變數需要用雙引號包含"$變數名"或用$包含。
按照變數的作用劃分:
(1)使用者自定義變數(字母或下劃線開頭,不能以數字開頭)
(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
(1)對數字的基本計算;做比較時,輸出結果為假時為0,1為真;特殊符號用轉義符
(2)對字串的處理
運算子意義
++ --
遞增 遞減
+ - !~
正 負 邏輯與取反
+ - * / %
加 減 乘 除 餘數
>=
比較大小
== !=
相等 不相等
>> <<
向左位移 向右位移
& ^ |
按位的與 按位的異或 按位的或
&& ||
邏輯與 邏輯或
?:條件判斷
計算從1加到100的值:
Shell程式設計基入門
shell是乙個命令直譯器,他的作用就是解釋執行使用者輸入的命令和程式,使用者輸入一條命令,它就執行一條,就可以立即得到回應的對話方式被稱為 互動 shell存在於作業系統的最外層,負責與使用者直接對話,把使用者輸入的命令解釋給作業系統,並處理各式各樣的作業系統的輸出結果,然後輸出到明明返回給使用者...
Shell 指令碼程式設計
1 執行shell的方法 指定shell bin sh 由sh執行指令碼 指令碼總是由sh解釋 顯示呼叫shell sh scriptname 在當前shell中執行指令碼 profile profile是可執行的 ksh profile profile是不可執行的 改變當前的執行環境責應輸入.pr...
Shell 指令碼程式設計
a file 如果 file 存在則為真。b file 如果 file 存在且是乙個塊特殊檔案則為真。c file 如果 file 存在且是乙個字特殊檔案則為真。d file 如果 file 存在且是乙個目錄則為真。e file 如果 file 存在則為真。f file 如果 file 存在且是乙個...