Shell總結2

介紹

shell 是一個解析命令,是人機交互的橋樑,將需要執行的命令保存在文本中,按照順序執行。

作用

用來解決重複化的工作
1 自動化軟件部署
2 自動化管理 系統初始化腳本,批量更改主機信息
3 自動化分析處理 統計網站訪問量
4 自動化部署 數據庫備份,日誌轉儲
5 自動化監聽腳本

基礎語法

開頭 #!/bin/bash 或 #!/bin/enc bash
註釋 #…

執行

1:
chmod +x .sh #修改執行權限
/…/
.sh 執行
2:
直接指定解析器
bash *.sh
可以輸出執行過程 bash -n *.sh
3:
使用source命令 重新讀取並執行
source *.sh

定義變量

A=hello 定義變量A
A=命令 將命令結果賦值A
echo $A 調用變量
unset A 取消變量A
變量名:
1 區分大小寫
2 不能包含特殊符號(? * …)
3 值中有特殊符合,使用”“
4 變量名不能以數字開頭
5 等號兩邊不能有空格

read交互是變量賦值

read 選項 變量名
選項:
-p 提示信息 -s 不顯示輸入
-n 限制輸入長度 -t 限制輸入時間
read -p “input:” -n 3 -t 3 A
從文件中讀取
read -p "input: " A < a.txt

定義有類型的變量(declare)

declare 選項 變量名=變量值
declare -i A=123
選項:
-i 整數 -r 只讀 -a 數組
-A 關聯數組 -x 將變量通過環境導出

變量分類

  • 本地變量:
    只能在當前進程有效。變量聲明默認爲本地變量。變量名=變量值
  • 環境變量:
    當前用戶有效子進程有效,declare -x 變量名=變量值 | export 本地變量名
  • 全局變量:
    全部用戶和程序可調用,新建用戶也可調用,修改配置文件(etc/bahsrc etc/profile),並source讓其生效.
    用戶讀取文件順序
    /etc/profile $HOME/.bash_profile $HOME/.hashrc /etc/bahsrc
  • 系統變量:
    shell固定好的變量
    $? 上一條命令的返回值 0表示OK 非0 有問題
    $0 當前執行的程序或腳本名
    $# 腳本後參數的個數
    $* 腳本後面所有參數,
    $@ 腳本後面所有參數,
    $1-$9 腳本後面的位置參數
    $! 當前終端後臺運行的最後一個進程號
    ! $ 調用最後一條命令中的參數
    $$ 當前進程號

四則運算

加+ 減- 乘* 除/ 取餘% n次方 **n
運算符號:
$(())
$[]
expr
let
小數運算 bc echo 1+1.5|bc

條件判斷語句

條件判斷語句格式
1 test 條件表達式
2 [ 條件表達式 ]
3 [[ 條件表達式 ]] 支持正則=~
test判斷參數
1 文件存在判斷參數
-e 判斷文件是否存在 -f 判斷是否存在並且是一個普通文件
-d 判斷是否存在並且是一個目錄 -L 判斷是否存在並且是一個軟連接
-b 判斷是否存在並且是一個設備文件 -S 判斷是否存在並且是一個套接字文件
-c 判斷是否存在並且是一個字符設備 -p 判斷是否存在並且是一個命名管道文件
-s 判斷是否存在並且是一個非空文件
! 取反

2 文件權限判斷參數
-r 是否可讀 -w 是否可寫 -x 是否可執行
-u 是否有suid,冒險位 -g 是否sgid,強制位 -k是否有t位,粘滯位
-ep 兩個文件是否爲同一個文件

3 判斷整數
-eq 相等 -ne 不等 -gt 大於 -lt 小於
-ge 大於等於 -le 小於等於

4 判斷字符串
-z 是否爲空 -n 是否非空
string1 = string2 是否相等 string1 = string2 是否不相等

5 多重條件判斷
-a 和 && 邏輯與
-o 和 || 邏輯或

流程控制語句

1 if結構
if [ condition];then
command
command
fi

if test 條件;then
	命令
fi

2 if else
if [condition ];then
command
else
command
fi
3 if elif else
if[ condition ];then
command1
elif [ condition2 ];then
command2
else
command3
fi

循環語句

1 for循環
for variable in {list}
do
command
command
done
{list} 可以{1…10} seq 10 a b c

for ((i=1;i<=5;i++))
do
command
done

seq序列

seq 10 生成1-10的序列
seq 10 -1 1 生成10-1的序列

條件控制語句

continue:
break:
exit:

While循環

while 表達式
do
command

done

until循環

until expression //爲假進入循環
do
command

done

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章