下面是我學習慕課網Linux運維工程師的部分筆記,,慕課網學習地址Linux運維工程師學習路徑
1.1,一個完整的shell腳本應該包括
腳本申明,#!
註釋信息,#
可執行語句
例如:
#!/bin/bash
#For Example
pwd
1.2,執行腳本的三種方式
- 腳本文件路徑 ./Example.sh
- sh腳本文件路徑 sh example.sh
- source腳本文件路徑 source example.sh
直接訪問腳本路徑的方式有點特殊,需要加可執行權限,
chmod u+x Example.sh
1.3,查看shell
- cat /etc/shells #查看系統中可用的shell解釋器查看
- echo $SHELL #查看系統的當前shell解釋器
2.1,shell接受用戶的參數
Example.sh
$1,$2,three,four,five,$6
還有下面這些已經被定義的shell預定義變量
$0,#當前執行shell腳本的程序名
$1-9,\${10},${11}... ,#參數的位置變量
$# , #一共有多少個參數
$* , #所有位置變量的值
$? , #判斷上一條命令是否執行成功,0成功,非0失敗
vim Example.sh
#! /bin/bash
echo "總共有$#個參數,分別是$*。"
echo "第一個參數爲$1,第五個參數爲$5。"
這一章我也有點迷,視頻地址http://www.imooc.com/learn/175
3.1 通配符
? #匹配任意一個字符
* #匹配一個,0個,多個任意字符,也就是可以匹配任意字符
[] #匹配括號中任意一個字符
[-] #匹配括號中任意一個字符,其中”-“代表一個範圍
[^] #邏輯非,表示匹配不是中括號中的任意一個字符,例如[^0-9]
4.1 輸出重定向
1,表示含義
設備 | 設備文件名 | 文件描述符 | 類型 |
---|---|---|---|
鍵盤 | /dev/stdin | 0 | 標準輸入 |
顯示器 | /dev/stdout | 1 | 標準輸出 |
顯示器 | /dev/sdterr | 2 | 標準錯誤輸出 |
2,
類型 | 符號 | 作用 |
---|---|---|
標準輸出重定向 | 命令 > 文件 | 以覆蓋的方式添加到文件內 |
標準輸出重定向 | 命令 >> 文件 | 以追加的方式把命令的正確輸出指定文件或設備中 |
標準錯誤輸出重定向 | 錯誤命令2>文件 | “>”左右兩邊沒有空格 |
標準錯誤輸出重定向 | 錯誤命令2>>文件 | 也沒有空格,以追加的方式 |
3,正確輸出和錯誤輸出同時保存
- 命令 > 文件2>&1 覆蓋,保存到同一個文件
- 命令 >> 文件2>&1 追加,保存到同一個文件
- 命令 &> 文件 覆蓋
- 命令 &> 文件 追加
- 命令 >> 文件1 2>>文件2 正確輸出到文件1,錯誤輸出到文件2
5.1 管道符
1,多命令執行符
多命令執行符 | 格式 | 作用 |
---|---|---|
; | 命令1 && 命令2 | 邏輯與,命令1正確執行,命令2纔會執行;命令1執行不正確,命令2也不會執行 |
&& | 命令1 || 命令2 | 邏輯或,命令1執行不正確,命令2纔會執行;當命令1執行正確,命令2不會執行 |
2,管道符
命令1 | 命令2
可以將命令1的正確輸出作爲命令2的操作對象
例如:
ll -a /etc/ | more
netstat -an | grep “ESTABLISHED”
6.1 bash中的其他特殊符號
- ” ,單引號,在單引號中所有的特殊符號,如”$”和”`”都沒有特殊含義
- “” ,雙引號,在雙引號中特殊符號都沒有特殊含義,但是”$”, “`”,”\”例外,擁有調用變量的值,引用命令,和轉義符的作用
- “ ,反引號,反引號括起來的內容是系統命令,在bash中會先執行它
(),和反引號作用一樣,先執行,再賦值。推薦使用 (),因爲反引號會比較容易看錯。- # ,代表註釋
- $ ,調用變量的值
- \ ,轉義符