1. 程式人生 > >1.1Shell腳本編程基礎

1.1Shell腳本編程基礎

雙引號 其他 直接 要求 email shel 腳本 $2 沒有

編程基礎
? 程序
?程序:算法+數據結構
?數據:是程序的核心
?數據結構:數據在計算機中的類型和組織方式
?算法:處理數據的方式
?程序編程風格:
過程式:以指令為中心,數據服務於指令
對象式:以數據為中心,指令服務於數據
?shell程序:提供了編程能力,解釋執行

程序的執行方式

? 計算機:運行二進制指令
? 編程語言:人與計算機之間交互的語言
? 低級編程語言:
機器:二進制的0和1的序列,稱為機器指令。與自然語言差異太大,難懂、難寫
匯編:用一些助記符號替代機器指令,稱為匯編語言
? 高級編程語言:
編譯:高級語言-->編譯器-->機器代碼-->執行
C,C++
解釋:高級語言-->執行-->解釋器-->機器代碼
shell,python,php,JavaScript,perl

編程基本概念

?編程邏輯處理方式:
順序執行
循環執行
選擇執行
?shell編程:過程式、解釋執行
編程語言的基本結構:
各種系統命令的組合
數據存儲:變量、數組
表達式: a + b
語句:if 

shell腳本基礎

?shell腳本:

包含一些命令或聲明,並符合一定格式的文本文件

?格式要求:首行shebang機制
#!/bin/bash
#!/usr/bin/python
#!/usr/bin/perl
shell腳本的用途有:
? 自動化常用命令
? 執行系統管理和故障排除
? 創建簡單的應用程序
? 處理文本或文件

創建shell腳本

?第一步:使用文本編輯器來創建文本文件
?第一行必須包括shell聲明序列:#!
     #!/bin/bash
?添加註釋
     註釋以#開頭
?第二步:運行腳本
?給予執行權限,在命令行上指定腳本的絕對或相對路徑
?直接運行解釋器,將腳本作為解釋器程序的參數運行

腳本規範

?腳本代碼開頭約定
1、第一行一般為調用使用的語言
2、程序名,避免更改文件名為無法找到正確的文件
3、版本號
4、更改後的時間
5、作者相關信息
6、該程序的作用,及註意事項
7、最後是各版本的更新簡要說明

shell腳本示例

#!/bin/bash
#------------------------------------------
#Filename: hello.sh
#Revision: 1.1
#Date: 2017/06/01
#Author: wang
#Email: [email protected]
#Website: www.magedu.com
#Description: This is the first script
#------------------------------------------
#Copyright: 2017 wang
#License: GPL
echo “hello world”

腳本調試

?檢測腳本中的語法錯誤
bash -n /path/to/some_script
?調試執行
bash -x /path/to/some_script

變量

shell中的變量分為

? ?1.局部變量:作用範圍在當前shell進程,無法在父子進程或其他進程之間傳遞,

? ? 2.全局變量:作用範圍在當前shell與其有血緣關系的進程中。

? ? 3.本地變量:作用範圍在腳本中某段代碼中。

? ? 4.位置變量:用於通過命令向腳本的位置變量傳遞參數。

? ? 5.特殊變量:用於表示某些變量的信息。

?```
1.局部變量:

? ? 賦值:name=‘value‘

? ? value可以是任意字符串。因為shell變量是弱類型變量,所以為變量不需要事先聲明也沒有類型。當變量被引用時會根據語句來匹配變量類型。

? ? set命令可以打印所有已有定義的變量。unset name用於刪除已定義的變量。

2.全局變量



? ? 賦值:export name=‘value‘

? ? evn命令可以打印當前所有全局變量。

3.只讀變量

? ? 賦值:readonly name=‘value‘

只讀變量只能聲明,無法修改與刪除。但是可以使用readonly -p name查看只讀變量。

4.位置變量

? ? 可以使用$1、$2、$3…來對變量進行引用,shift命令可以修改變量隊列。

????$0: 命令本身
????$*: 傳遞給腳本的所有參數,全部參數合為一個字符串
????$@: 傳遞給腳本的所有參數,每個參數為獨立字符串
????$#: 傳遞給腳本的參數的個數
????$@ $* 只在被雙引號包起來的時候才會有差異

????set -- 清空所有位置變量

# 退出狀態
? ? shell利用退出狀態碼來判斷進程的執行狀態。

? ? “0”表示進程執行成功,其他數字“1~255”表示進程執行失敗。退出狀態存儲在“$?”變量中,在腳本執行中,退出狀態取決於腳本中最後執行命令的退出狀態。

? ? 也可以通過"exit N"來設置進程的退出狀態,但是腳本執行到"exit"語句時會立即停止腳本的執行。

1.1Shell腳本編程基礎