您好,登錄后才能下訂單哦!
編程語言:
問題空間:使用人類的自然語言描述的任務
解空間:就是使用編程語言描述任務的實施步驟和顯示最終結果
編程思想:能夠把編程語言所提供的語法格式,隨時隨地的轉換成能夠解決問題的思路。
對于編程語言的學習:
1.學習編程語言的語法格式
2.學習工具的使用(庫,命令)
3.算法
4.數據結構
學習編程語言的目的:將問題空間和解空間對應起來,最直接辦法是使用解空間的語言習慣來進行思考
學習編程語言的目標:
將問題空間和解空間對應起來;最直接的辦法就是使用解空間的語言習慣來進行思考;
shell腳本編程:
shell腳本的內容和格式:
首行,絕對行首,shebang(解釋器程序的絕對路徑)
注釋信息:以#占據絕對行首的行;
為了能在程序中突出程序的功能,適當的添加空白行,以分隔不同功能的源代碼塊;
有一定的縮進
利用bash腳本編程實現算數運算:
+
—
*
/
% 模運算 取余
**|^ 乘方
增強型算術運算符號:
+= let B=B+1 ---> let B+=1
-=
/=
*=
%=
特殊的增強型算術運算:
B=B+1 B+=1 B++
算數運算方法:
1.let VAR=算數表達式
將算數表達式先行進行算數運算,并將運算得到的結果保存到變量VAR中。
2.VAR=$[算術表達式]
算術表達式中如果有變量引用,可以使用$引用,也可以省略$
SUM=$[C+B] 相當于 SUM [$C+$B]
3.VAR=$((算術表達式))
算術表達式中如果有變量引用,可以使用$引用,也可以省略$
4.expr ARGU1 ARGU2 ARGU3
ARGU1和ARGU3必須是數值
ARGU2必須是運算符號
5.echo “算數表達式” | bc
注意:* 在某些情況下需要轉義。
變量:
弱變量,弱類型的變量,字符型(默認)數值型(不包括浮點型)
條件測試命令:
test EXPRESSION
shell的內建命令
[EXPRESSION]
外部命令
`EXPRESSION`
bash的內部關鍵字
注意:這類命令一般沒有執行結果,只有執行狀態返回值
test測試命令有三類測試表達式:
1.數值測試:雙目操作符
-eq:被測試的兩個數值是否相等,相等為真,不等為假
-ne:被測試的兩個數值是否不等,不等為真,相等為假
-gt:被測試的兩個數值左面的是否大于右面的,大于為真,小于為假
-lt:被測試的兩個數值左邊的是否小于右邊的,小于為真,大于為假
-ge:被測試的兩個數值左邊的是否大于等于右邊的,大于等于為真,小于為假
-le:被測試的兩個數值左邊的是否小于等于右邊的,小于等于為真,大于為假
2.字符串測試
雙目操作符:
==|= :被測試的兩個字符串是否相同,相同為真,不同為假。
!= :被測試的兩個字符串是否不相同,不同為真,相同為假。
> :被測試的兩個字符串在ASCII碼表中對應的二進制數值,左邊是否大于右邊,大于為真,小于為假。
< :被測試的兩個字符串在ASCII碼表中對應的二進制數值,左邊是否小于右邊,小于為真,大于為假。
注意:大于號和小于號必須用在`EXPRESSION`
=~ :被測試的兩個字符串,左側的字符串能否被右側的PATTERN匹配,能匹配為真,不能為假。
單目操作符:
-z "STRING" :判斷指定的字符串是否為空串,空為真,不空為假。
-n "STRING" :判斷指定的字符串是否為非空串,非空為真,空為假。
注意:
1.通常情況下字符串要加引號,單引號或雙引號都行,根據實際情況選擇即可。
2.[[]]和[]在某些情況下,可能意義不同,區分使用。
3.表達式的兩端以及操作符的兩端都要有空格
3.文件狀態測試
單目測試:
文件的存在性測試:如果被測試的文件存在則為真,不存在則為假。
-a|-e
[-e /backup]
文件類型測試(先測試存在性):
-b FILE:被測試的文件是否存在并且是否為塊設備,存在且為塊設備為真,否則為假。
-c FILE:被測試的文件是否存在并且是否為字符設備……
-d FILE:被測試的文件是否存在并且是否為目錄文件……
-f FILE:被測試的文件是否存在并且是否為普通文件……
-h|-L FILE:被測試的文件是否存在并且是否為符號鏈接文件……
-p FILE:被測試的文件是否存在并且是否為管道文件……
-S FILE:被測試的文件是否存在并且是否套接字文件……
文件的訪問權限測試:
-r FILE:被測試的文件是否存在并且當前有效用戶是否可讀,文件存在并且當前有效用戶可讀為真,否則為假
-w FILE:被測試的文件是否存在并且當前有效用戶是否可寫……
-x FILE:被測試的文件是否存在并且當前有效用戶是否可執行……
文件的特殊權限標識測試:
-u FILE:被測試的文件是否存在并且是否設置了SUID權限,文件存在并且設置了SUID權限為真,否則為假。
-g FILE:被測試的文件是否存在并且是否設置了GUID權限,……
-k FILE:被測試的文件是否存在并且是否設置了STICKY權限,……
文件的所有權測試:
-o FILE:被測試的文件是否存在并且其屬主是否為當前有效用戶
-G FILE:被測試的文件是否存在并且其屬組是否為當前有效用戶的組
文件內容是否為空:
-s FILE:被測試的文件是否存在并且內容不為空,存在且內容不為空為真,否則為假。
時間戳測試:
-N FILE:被測試的文件從上一次被修改后,是否被修改過。
雙目測試:
FILE1 -ef FILE2:被測試的兩個文件是否指向同一個文件系統的相同inode的用硬連接
FILE1 -nt FILE2:被測試的兩個文件,FILE1是否比FILE2更新
FILE1 -ot FILE2:被測試的兩個文件,FILE1是否比FILE2更舊
測試語句中可以添加邏輯運算:
第一種表達方式:
[ -o/tmp/test]&&[-s/tmp/test ]
[ -o/tmp/test]||[-s/tmp/test ]
![-o/tmp/test ]
第二種表達方式:
[ -o/tmp/test -a -s /tmp/test ]
[ -o/tmp/test -o -s /tmp/test ]
[ !-o/tmp/test ]
命令的執行結果:
正常的輸出結果
命令的執行狀態返回值:
0-255
0:表示命令執行成功
1,2,127:系統保留的;
3-126,128-255:用戶自定義的執行狀態返回值;
exit[#]
退出當前shell的登錄
當shell腳本運行時,一旦遇到exit命令,將立即結束當前shell進程,同時腳本運行也將被停止,即exit后面的所有命令不再執行
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。