中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

shell腳本,測試

發布時間:2020-06-18 16:45:20 來源:網絡 閱讀:390 作者:Vincent一馬 欄目:網絡安全

首先我們要了解腳本的內容和格式

  1. 首行必須是shebang(解釋器路徑),shebang必須占據絕對行首

  2. 在shell腳本中,除了shebang之外,以#占據據對行首的內容,均為注釋行,解釋器會自動忽略這樣的行內容

  3. 為了能在程序中突出程序的功能,適當的添加空白行,以分隔不同的源代碼塊

  4. 有一定的縮進

利用bash腳本編程實現算術運算:

 +、-  

 *、/

 %:模運算,取余數

 **|^

增強型的算數運算符號

 +=: let B=B+2-->let B+=2 

 -=  let B=B+2-->let B-=2 

 *=  let B=B+2-->let B*=2 

 /=  let B=B+2-->let B/=2 

 %=  let B=B+2-->let B%=2 

特殊的增強型運算:

 let B=B+1 -->let B+=1 -->let B++  

 let B=B-1 -->let B-=1 -->let B--

 B++: 先將B的值賦給其他變量,然后再自身+1

 ++B:先做自身+1計算,然后再將B的值賦給其他變量

shell提供的算數運算方法

 1.let:let VAR=算數表達式

 將算數表達式先行進行算數運算,并將運算的道德結果保存到變量VAR中

 2.VAR=$[算數表達式]

 算數表達式中,如果有變量引用,可以使用$引用,也可以省略$

 3.VAR=$((算數表達式))

 算數表達式中,如果有變量引用,可以使用$引用,也可以省略$

 4.expr ARGU1 ARGU2 ARGU3 

  ARGU1和ARGU3必須是數值,ARGU2必須是運算符號

 5.echo "算數表達式" | bc 

 注意:*在某些情況下需要轉義

條件測試命令

 test EXPRESSION

  shell的內建命令

 [ EXPRESSION ]

  外部命令[

 `EXPRESSION`  

  bash的內部關鍵字

注意:這類命令一般沒有執行結果只有執行狀態返回值;

這里說一下test測試命令的測試表達式

test測試命令有三類測試表達式:

1.數值測試:雙目操作符

  -eq: 被測試的兩個數值是否相等,相等為真,不等為假

  -ne:被測試的兩個數值是否不相等,不等為真,相等為假

  -gt:被測試的兩個數值,左邊的是否大于右邊的,大于為真,不大于為假

  -lt:被測試的兩個數值,左邊的是否小于右邊的,小于為真,不小于為假

  -ge:被測試的兩個數值,左邊的是否大于等于右邊的,大于等于為真,小于為假

  -le:被測試的兩個數值,左邊的是否小于等于右邊的,小于等于為真,大于為假 

2.字符串測試

 雙目操作符:

  ==|=:被測試的兩個字符串是否相同,相同為真,不同為假

  !=:被測試的兩個字符串是否不相同,不同為真,相同為假

  >: 被測試的兩個字符串在ASCII碼表中對應的二進制數值,左邊是否大于右邊,大于為真,小于為假

  <: 被測試的兩個字符串在ASCII碼表中對應的二進制數值,左邊是否小于右邊,小于為真,大于為假

 注意:>和<必須用在` EXPRSSION `

  =~:被測試的兩個字符串,左側字符串能否被右側的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:被測試的文件是否存在并且設置了SGID權限

   -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 -a -s /tmp/test ]   與  o是或  !取反

 命令的執行狀態:

  正常的輸出結果:

  命令的執行狀態返回值:

  0~255 

  當shell腳本運行時,一旦遇到exit命令,將立即結束當前shell,同時腳本的運行也將被停止,即exit之后的命令都不在被解釋執行; 


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

广东省| 五大连池市| 色达县| 汕头市| 尉犁县| 石景山区| 绥棱县| 威宁| 永靖县| 牟定县| 武穴市| 唐河县| 迭部县| 建德市| 宜阳县| 拜城县| 方正县| 岢岚县| 内黄县| 冷水江市| 尖扎县| 镇雄县| 青河县| 汉中市| 新乐市| 瑞金市| 东源县| 元朗区| 乐昌市| 东莞市| 阳信县| 微山县| 额济纳旗| 临潭县| 张家港市| 宁陵县| 昭通市| 永吉县| 思茅市| 徐水县| 宝丰县|