編程基礎
一個程序的基本格式是由“指令+數據”組成,有些程序編程側重于指令,數據服務于指令,我們稱之為過程式編程(JAVA、C語言等)。而我們所學習的shell編程是以數據為中心,以指令服務于數據的對象式。
shell腳本基礎
一個符合特定格式并包含包含命令和說明的文本文件。
首行格式:shebang機制
每個shell腳本的第一行必須遵循shebang機制,以bash腳本為例 ,首行開頭必須是“#!/bin/bash”,通過這個機制我們可以初步了解是何種類型的腳本。
在腳本中以“#”開頭的行都表示注釋,便于說明腳本的每一步操作。這些行在運行腳本是不會顯示。
我們可以通過vim編輯器創建腳本,
其中第一行是shebang機制,第二行是對腳本的簡單說明,第三行是命令來顯示“it is a simple script”。保存后,一個基本的腳本就完成了。這時的腳本還不可用,還需給予執行權限后方可執行。執行效果如下:
這就是腳本的最基本形式。
在編寫完腳本后,我們可以通過“bash -n”來檢測是否存在語法錯誤。
腳本的用途
自動化常用命令
?執行系統管理和故障排除
創建簡單的應用程序
處理文本或文件
編程的基礎知識
變量的基本概念
變量是一種使用方便的占位符,用于引用計算機內存地址,該地址可以存儲腳本運行時可更改的程序信息。變量通常用在腳本中的賦值運算,文本表示中。
在bash中使用的變量都是弱類型變量(不需事先指定類型,默認字符型,在進行計算時自動進行轉換,)且不支持浮點數。
變量的命名規則:
不可使用程序中的保留字,避免混淆
不可以數字開頭
通俗易懂,見名知意
駝峰命名法
幾種不同的變量
(1)局部變量:僅在當前shell范圍下生效。對子shell無效,通過“set”查看所有變量,通過“unset name”刪除指定的變量。
(2)環境變量:在當前shell及子shell范圍下生效。通過“export”和“declear -x”來定義環境變量,可通過“env”,“printenv”,“export”和“declare -x”來查看所有環境變量。
(3)本地變量:又稱為常量,不可修改或刪除。通過“readonly”和“declear -r”來定義本地變量,可通過“readonly -p”來查看所有本地變量。
(4)位置變量:在腳本中需要多個參數時,每一個變量所對應的參數。
$1表示第一個參數,$2表示第二個參數……;$#表示所有參數的個數;$0表示腳本的名稱($0表示完整路徑,‘basename $0表示基名’);$@和$*都表示所有參數,不同的是$@是將所有參數都作為獨立的參數而$*將所有參數看成一個整體。
shift[n]可使第n+1個參數替換第一個參數,第n+2個參數替換為第二個參數,以此類推。“set –”可清除所有位置變量。
算術運算
+ (加)? -(減)? *(乘)?? /(除)? **(乘方) %(取余)
算術運算
let var=算數表達式(可不加’$’)
var=$[算術表達式](加$)
var=$((算術表達式))(加$)
增強型賦值
i+=3?? 等同于?? i=i+3
i++ ? ? 等同于? i=i+1(先取值再+1)
++i?? 等同于???? i+1=i(先+1再取值)
邏輯運算
true=1,false=0
或(|)?????????????????????????????????????????? 與(&) ? ? ? ? ? ? ? ? ? ? ? ? ? 非(?。?/p>
0|0=0 ? ? ? ? ? ? ? ????????????????????????? 0&0=0??????????????????????????????????? !0=1
1|0=1?????????????????????????????????????????? 1&0=0??????????????????????????????????? !1=0
0|1=1?????????????????????????????????????????? 0&1=0
1|1=1?????????????????????????????????????????? 1&1=1
短路運算
短路或(||)
cmd1||cmd2? 當cmd1為1時將不執行cmd2,當cmd1為0時執行cmd2。
短路與(&&)
cmd1&&cmd2 當cmd1為0時將不執行cmd2,當cmd1為1時執行cmd2。
異或(^)
相同為0,不同為1。
條件測試
在腳本中根據默寫特定的需要來測試命令是否執行時,可使用條件測試來確定是否執行。
測試命令:
[??? ]
[[ ? ]]
中括號的兩邊需空格
可以進行數值測試
也可以進行字符串測試
其中“[[? ? =~? ? ]]”支持擴展正則表達式
還可以測試文件類型以及文件權限等。
使用read命令來接受輸入
從標準輸入中讀取數值,將每個數值分配給一個變量,所有剩余的單詞都被分配到最后一個變量。重定向輸入時,默認read只會讀取重定向的第一行。
bash命令行的優先級定義
把命令行分成單個命令詞
展開別名
?展開大括號的聲明({})
展開波浪符聲明(~)
命令替換$() 和 “)
再次把命令行分成命令詞
展開文件通配(*、 ?、 [abc]等等)
準備I/0重導向(<、 >)
運行命令
bash的配置文件
用戶登錄時讀取的配置文件,針對所有用戶的配置文件存放在“/etc/profile、/etc/profile.d/*、/etc/bashrc中”,個人配置文件存放在“~/.bash_profile和~/.bashrc中”
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/88928