shell是弱類型變成語言
變量賦值: VAR_NAME=VALUE
撤銷變量: unset VAR_NAME
特殊變量: $? 執行狀態碼
$# 參數geshu
$*參數列表
$@參數列表
bash:
變量類型 1、環境變量
export VAR_NAME=VALUE
腳本在執行的時候會啓動一個子shell進程:
命令行中啓動的腳本會繼承當前shell的環境變量
系統自動執行的程序腳本(非命令行啓動)就需要自我定義環境變量
2、本地變量(局部變量)
VAR_NAME=VALUE 作用於整個bash進程。
local VAR_NAME=VALUE 作用於當前代碼段。
3、位置變量
$1,$2,.....
4、特殊變量
$?:保存上一個命令執行狀態返回值
程序執行以後可能有兩隻返回值
1、程序執行結果
2、程序執行狀態返回代碼(0-255)
0是正確執行
1-255:錯誤執行 1,2,127系統保留
bash如何實現條件判斷?
條件測試類型:
1、整數測試
2、字符測試
3、文件測試
條件測試的表達式:
[ expression ] 兩頭空格 否則語法錯
` expression ` 同上
tset expression
整數比較:
int1 -eq int2 兩數相等爲真
int1 -ne int2 兩數不等爲真
int1 -gt int2 int1大於int2爲真
int1 -ge int2 int1大於等於int2爲真
int1 -lt int2 int1小於int2爲真
int1 -le int2 int1小於等於int2爲真
命令的邏輯關係:
邏輯與:&&
邏輯或:||
#!/bin/bash ! id user1 &> /dev/null && useradd user1 && echo "user1" |passwd --stdin user1 &> /dev/null || echo "用戶已經存在"
條件判斷,控制結構
單支語句判斷
if 判斷條件 ;then
statement1
statement1 4 2 3
.....
else
statement3
statement4
....
fi
多分支if語句
if 判斷條件1
then
statement1
....
elif 判斷條件2
then
statement2
elif 判斷條件3
then
statement3
else
statement4
fi
文件測試
-e file :測試文件是否存在
-f file :測試是否爲普通文件
-d file :測試指定路徑是否爲目錄
-x
-r
-w file 測試文件的權限