1.腳本運行環境
- 登錄後默認使用的Shell程序,一般爲/bin/bash不同Shell的內部指令、運行環境等會有所區別
- 查看shell cat letc/shells
- /bin/sh
- /binvbash
- /sbin/nologin
- /bintcsh
- /bin/csh
- /binksh
awk ‘(print $1)’:取某一列 awk -F: ‘(print $1,$2)’ wc -l統計行數
2.shell的編寫與執行
- 第一行:聲明使用的bash:#!/bin/bash
- 第二行:註釋
- 執行shell腳本的方式
- ./腳本,必須要有x權限
- sh 腳本 不一定需要x的權限
- source 腳本
- 重定向與管道操作
- 交互式硬件設備:
- 標準輸入:/dev/stdin 0
- 標準輸出:/dev/stdout 1
- 標準輸出錯誤:/dev/stderr 2
- 交互式硬件設備:
重定向輸入 | > | 將輸出重定向到文件 |
重定向輸出 | < | 將輸入重定向文件 |
追加 | >> | 將文件以追加的方式重定向到文件 |
輸出合併 | >& | 將輸出文件合併 |
輸入合併 | <& | 將輸入文件合併 |
<<tag | 將開始標記tag和結束標記tag之間的內容作爲輸入 |
- /dev/null :如果希望執行某個命令但是有不希望屏幕上顯示輸出結果,可以將輸出重定向到/dev/null文件中。此文件是一個特殊的文件,寫入的文件都會被丟棄,從此讀取文件內容啥也讀取不到,但是他會起到禁止輸出的效果
2.變量
- Shell變量的作用
- 變量的作用
- 爲靈活管理 Linux系統提供特定參數,有兩層意思
- 變量名:使用固定的名稱,由系統預設或用戶定義
- 變量值: 據用戶設置、系統環境的變化而變化
- 變量的類型
- 自定義變量:由用戶自己定義、修改和使用
- 環境變量:由系統維護,用於設置工作環境
- 位置變量:通過命令行給腳本程序傳遞參數
- 預定義變量:Bash中內置的一類變量,不能直接修改
- 變量的作用
- 自定義變量
- 賦值時使用引號
- 雙引號:允許通過$符號引用其他變量值
- 單引號:禁止引用其他變量值,$視爲普通字符
- 反撇號:命令替換,提取命令執行後的輸出結果
- read -p [” “] var 鍵盤輸入內容爲變量賦值
- 設置變量的作用範圍
- export :全局變量
➢整數變量的運算
- 格式: expr 變量1 運算符 變量2 運算符 變量3…
- 常用運算符
- 加法運算: +
- 減法運算:-
- 乘法運算:\ *
- 除法運算: /
- 求模(取餘)運算: %
- 環境變量:
- 配置文件:/etc/profile,~/bash_profile
- 位置變量:$n,n爲1-9之間的數字
- 默認參數位置:
- $#:傳遞參數腳本的參數的個數
- $*:所有位置參數的內容
- $?:命令中執行後返回的狀態
- $$:當前進程的進程號
- $!:後臺運行的最後一個進程號
- $-:顯示shell使用的當前選線
- $0:當前執行的進程名
CRONTAB
- 計劃任務(編寫腳本時注意添加命令的腳本,先export 腳本變量)
- crontab -e:修改crontab文件
- crontab -l:顯示crontab文件
- crontab -r:刪除crontab文件
- crontab -ir:刪除crontab文件前確認
- 編寫語法(某一列’*’表示全部範圍有效):
- 第一列:分鐘00-59
- 第二列:小時00-23
- 第三列:日1-31
- 第四列:月1-12
- 第五列:星期:0-6
- 第六列:運行的命令(要寫完全路徑)
3.條件測試
- 條件測試:文件測試,整數值比較,字符型比較
- if語句
- test命令:測試指定表達式是否成立
- 格式:①test 條件表達式 ; ② test [ 條件表達式 ](中括號中間的表示與中括號兩端都要有空格)
- 文件測試: 格式:【操作符 文件或目錄】
- -d 測試時候是目錄
- -f 測試是否是文件
- -e 測試目錄或者文件是否存在
- -r,w,x:測試目標是否有相應的權限
- 數值比較 : [整數1 操作符 整數2]
- -eq :等於
- -ne: 不等於
- -gt:大於
- -lt:小於
- -le:小於等於
- 字符串比較
- 格式:[ 字符串1 = 字符串2 ]()等號的左右要有空格,【】與字符串之間也要有空格,而賦值語句則等號左右沒有空格
- 【 -z 字符串】判斷是否是空白字符串
- 邏輯測試
- 格式:【表達式1】操作符 【表達式2】
- 格式2: 命令1 操作符 命令2
- -a或者&&:邏輯與,而且的意思
- -o或者||:邏輯或,或者的意思
- !:邏輯否
- if結構
- 單分支結構:if then fi
- 雙分支結構: if then else fi
- 多分枝結構:if then elif then else fi
- test命令:測試指定表達式是否成立
- if語句
3.循環
- for循環
- for循環寫法
- for((i=1;i<=10;i++))
- for i in `seq 10`
- for i in {1…10}
- 表達式的表達方法
- let var=a * j
- ((var=i*j))
- var=$i*$j
- var=$[i*j]
- var=`expr $i \* $j `
- var=`echo $i*$j |bc`
- while循環
- case