Shell編程:
編程語言:機器語言、匯編語言、高級語言
高級語言:
靜態語言:編譯型語言
靜態語言:編譯型語言
強類型(變量)
變量:\\變量在使用前,必須事先聲明,甚至還需要初始;。
事先轉換成可以執行格式
C、C++、JAVA、C#
動態語言:解釋型語言,on the fly
弱類型 \\邊解釋邊執行。
變量:\\變量用時聲明,甚至不區分類型。
PHP、SHELL、Python、Perl
變量:內存空間,命名
內存:編址的存儲單元
變量類型:事先確定數據的存儲格式和長度;
字符
數值
整型
浮點型
邏輯運算:
與:只要有一個為假,結果一定為為假
或:只要有一個為真,結果一定為真
我是分割線
行間距太大,請求調整
Shell
變量賦值:
'VAR_NAME=VALUE'
BASH變量類型:
環境變量
本地變量(局部變量)
位置變量
特殊變量
本地變量:
#VARNAME=VALUE':作用域整個bash進程;
局部變量:
# local VARNAME=VALUE:;'作用域為當前代碼段
環境變量:
# export VARNAME=VALUE':作用域為當前shell進程及其子進程;
位置變量
$1,$2,…
. root/filetest3.sh /etc/passwd /tmp/testdir
$1=/etc/passwd $2=/tmp/testdir
特殊變量:
$?:上一個命令的執行狀態返回值;
程序執行,可能有兩類的返回值:
'1、程序執行結果'
'2、程序狀態返回代碼(0-255)'
0:正確執行
1-255:錯誤執行,1,2,127,系統預留
"導出"
$#:參數的個數
$*:參數列表
$@:參數列表
撤銷變量:
# unset VARNAME'
查看shell中的變量
# set
查看當前shell中環境變量:
# printenv
# env
# export
》腳本在執行時會啟動一個子sehll進程;
》命令行中啟動的腳本會繼承當前shell環境變量;
》系統自動執行的腳本(非命令行啟動)就需要自我定義需要各環境變量;
練習:寫一個腳本,完成一下任務
1、添加5各用戶,user1,…,user5
2、每個用戶的密碼同名,而且要求添加密碼完成以后不顯示passwd命令的執行結果信息;
3、每個添加完成后,都要顯示用戶某某已經成功添加
練習:寫一個腳本,完成一下任務
1、使用一個變量保存一個用戶名;
2、刪除此變量中的用戶,且一并刪除其家目錄;
3、顯示"用戶刪除完成"類信息
條件判斷:
如果用戶不存在
添加用戶,給密碼并顯示添加成功;
否則
顯示如果已經存在,沒有添加;
bash中如何實現添加判斷?
添加測試類型:
整數測試
'-eq:測試兩個整數是否相等;比如 $A -eq $B
'-ne:測試兩個整數是否相等;不等,為真;相等,為假
'-gt:測試一個整數是否大于另一個數;大于,為真;否則,為假
'-lt:測試一個整數是否大于另一個數;小于,為真;否則,為假
'-ge:大于或等于
'-le:小于或等于
# [ $EXPRESSION -eq 0 ] \\測試表達式的用法。
# [[ $EXPRESSION ]]
# test expression
字符測試
==:測試是否相等,相等為真,不等為假
!=:測試是否不等,不等為真,等為假
文件測試
-e FILE:測試文件是否存在
-f FILE:測試文件是否為普通文件
-d FILE:測試指定路徑是否為目錄
-r FILE:測試當前用戶對制定文件是否有讀取權限;
-w FILE:測試當前用戶對制定文件是否有寫權限;
-x FILE:測試當前用戶對制定文件是否有執行權限;
/////////////////////////////////////////////////////////////////////////////////////////////////////
shell中如何進行運算:
A=3
B=6
1、let 算術運算表達式
# let C=$A+$B
# echo $C
2、$[算術運算表達式]
# C=$[$A+$B]
# echo $C
3、$((算術運算表達式))
echo $(($A+$B))
'單分支if語句
if 判斷語句; then
語句;
語句;
fi
'雙分支if語句
if 判斷語句; then
語句
語句
else
語句
語句
fi
'多分支if語句
if 判斷條件; then
statement1
…
elif 判斷條件;then
statement2
…
elif 判斷條件;then
statement3
…
else #前面所有的條件都不滿足,才執行這個
statement4
…
fi
case語句
case VALUE in
1)
comd……
;;
2)
conmd…….
;;
…)
comd…….
;;
esac
/////////////////////////////////////////////////////////////////////////////////////////////////////
循環:進入條件,退出條件
for
for 變量 in 列表; do
循環體
done
如何生成列表:
{1..100}
`seq 起始數 步進長度 結束數`
declare -i SUM=0
-x:將一個變量聲明為環境變量
for循環的特殊格式:
for ((控制變量初始化;條件判斷表達式;控制變量的修正表達式));do
循環體
done
控制變量初始化:僅在運行到循環代碼段時執行一次
控制變量的修正表達式:每輪循環結束會先進行控制變量修正運算而后再做條件判斷
while
while CONDITION; do
循環體
done
CONDITION:循環控制條件;進入循環之前,先做一次判斷;每一次循環之后會再次做判斷;條件為“ true”,則執行
一次循環;直到條件測試狀態為“ false”終止循環
因此: CONDTION一般應該有循環控制變量;而此變量的值會在循環體不斷地被修正
進入條件: CONDITION為true;
退出條件: CONDITION為false
until
until CONDITION; do
循環體
done
CONDITION:同上相反
進入條件: CONDITION 為false
退出條件: CONDITION 為true
2016-08-17-15:34:57
原創文章,作者:皺 多利亞,如若轉載,請注明出處:http://www.www58058.com/36815
對腳本常見的語句語法總結的和詳細,腳本學習更重要的是多看多寫,作業要好好完成。