亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 課堂 > 技術開發 > 正文

shell中條件測試

2020-05-27 13:35:52
字體:
來源:轉載
供稿:網友

   1.test語句

  當我要檢測系統上面某些檔案戒者是相關的屬性時,就得用test指令。

  (1) 關于某個檔名的文件類型判斷,如 test -e filename 表示存在

  -e 該『檔名』是否存在?(常用)

  -f 該『檔名』是否存在且為檔案(file)?(常用)

  -d 該『文件名』是否存在且為目錄(directory)?(常用) -b 該『檔名』是否存在且為一個 block device 裝置?

  -c 該『檔名』是否存在且為一個character device 裝置?

  -S 該『檔名』是否存在且為一個 Socket 檔案?

  -p 該『檔名』是否存在且為一個 FIFO (pipe) 檔案?

  -L 該『檔名』是否存在且為一個連結檔?

  (2) 關于檔案的權限檢測,如 test -r filename 表示可讀否 (但 root 權限常有例外)

  -r 偵測該檔名是否存在且具有『可讀』的權限?

  -w 偵測該檔名是否存在且具有『可寫』的權限?

  -x 偵測該檔名是否存在且具有『可執行』的權限?

  -u 偵測該文件名是否存在且具有『SUID』的屬性?

  -g 偵測該文件名是否存在且具有『SGID』的屬性?

  -k 偵測該文件名是否存在且具有『Sticky bit』的屬性?

  -s 偵測該檔名是否存在且為『非空白檔案』?

  (3)兩個文檔之間的比較 test file1 -nt file2

  -nt (newer than)判斷 file1 是否比 file2 新

  -ot (older than)判斷 file1 是否比 file2 舊

  -ef 判斷 file1 和file2 是否為同一檔案,可用在判斷 hard link 的判定上。

  (4) 關于兩個整數之間的判定,例如 test n1 -eq n2

  -eq 兩數值相等 (equal)

  -ne 兩數值不等 (not equal)

  -gt n1 大于 n2 (greater than)

  -lt n1 小于 n2 (less than)

  -ge n1 大于等于 n2 (greater than or equal)

  -le n1 小于等于 n2 (less than or equal)

  (5)判定字符串的數據

  test -z string 判定字符串是否為 0 ?若 string 為空字符串,則為 true

  test -n string 判定字符串是否非為 0 ?若 string 為空字符串,則為 false。注: -n 亦可省略

  test str1 = str2 判定 str1 是否等于 str2 ,若相等,則回傳 true

  test str1 != str2 判定 str1 是否不等于 str2 ,若相等,則回傳 false

  (6)多重條件判定,例如: test -r filename -a -x filename

  -a (and)兩狀況同時成立!例如 test -r file -a -x file,則 file 同時具有 r 與x 權限時,才回傳 true。

  -o (or)兩狀況任何一個成立!例如 test -r file -o -x file,則 file 具有 r 或者 x 權限時,就可回傳 true。

  ! 反相狀態, 如 test ! -x file ,當 file 不具有 x 時,回傳 true。

  例子:

  # 1. 讓使用者輸入檔名,并判斷使用者是否真的有輸入字符串?

  echo -e "Please input a filename, I will check the filenames type and

  permission. nn"

  read -p "Input a filename : " filename

  test -z $filename && echo "You MUST input a filename." && exit 0

  # 2. 判斷檔案是否存在?若不存在則顯示訊息結束腳本

  test ! -e $filename && echo "The filename $filename DO NOT exist" &&

  exit 0

  # 3. 開始判斷文件類型與屬性

  test -f $filename && filetype="regulare file"

  test -d $filename && filetype="directory"

  test -r $filename && perm="readable"

  test -w $filename && perm="$perm writable"

  test -x $filename && perm="$perm executable"

  # 4. 開始輸出信息!

  echo "The filename: $filename is a $filetype"

  echo "And the permissions are : $perm"

  2.利用判斷符號 [ ]

  除了我們很喜歡使用的 test之外,其實,我們還可以常用判斷符號[](就是中括號啦)來進行數據的判斷呢!但要注意以下幾點:

  (1)在中括號 []內的每個組件都需要有空格鍵來分隔;

  (2)在中括號內的發數,最好都以雙引號括號起來;

  (3)在中括號內的常數,最好都以單或者雙引號括號起來。

  例子:

  #!/bin/bash

  PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin

  export PATH

  read -p "Please input (Y/N): " yn

  [ "$yn" == "Y" -o "$yn" == "y" ] && echo "OK, continue" && exit 0

  [ "$yn" == "N" -o "$yn" == "n" ] && echo "Oh, interrupt!" && exit 0

  echo "I dont know what your choice is" && exit 0

  3.shell中經常在測試中用到的幾個常數

  (1)執行的腳本檔名為 $0這個變量,第一個接的參數就是 $1,依次類推。

  (2) $# :代表后接的參數『個數』,$0不算在里面。

  (3) $@:代表『 "$1" "$2" "$3" "$4"』之意,每個變量是獨立的(用雙引號括起來)。

  (4) $*:代表『 "$1c$2c$3c$4"』,其中 c 為分隔字符,默認為空格鍵,所以本例中代表『 "$1 $2 $3 $4"』之意。

  例子:

  腳本如下:

  echo "The script name is ==> $0"

  echo "Total parameter number is ==> $#"

  [ "$#" -lt 2 ] && echo "The number of parameter is less than 2. Stop

  here."

  && exit 0

  echo "Your whole parameter is ==> $@"

  echo "The 1st parameter ==> $1"

  echo "The 2nd parameter ==> $2"

  執行結果:

  [root@www scripts]# sh sh07.sh theone haha quot

  The script name is ==> sh07.sh <==檔名

  Total parameter number is ==> 3 <==果然有三個參數

  Your whole parameter is ==> theone haha quot <==參數的全部內容

  The 1st parameter ==> theone <==第一個參數

  The 2nd parameter ==> haha <==第二個參數

  注:還可以用shift進行參數偏移

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产欧美在线视频| 欧美电影免费观看高清| 欧美影院成年免费版| 日韩亚洲欧美中文高清在线| 亚洲国产精品一区二区三区| 黑人极品videos精品欧美裸| 日韩视频免费在线| 日韩视频在线一区| 91亚洲精品在线观看| 国产一区二区三区中文| 亚洲国产成人精品久久| 欧美成人三级视频网站| 国产成人精品在线视频| 欧美亚州一区二区三区| 中文字幕日韩在线观看| 一区二区亚洲欧洲国产日韩| 欧美午夜性色大片在线观看| 国产欧美一区二区白浆黑人| 亚洲精品电影网站| 亚洲欧美日韩高清| 欧美成人精品h版在线观看| 久久久久中文字幕2018| 国产精品视频公开费视频| 国产精品免费小视频| 永久免费精品影视网站| 日韩在线免费视频观看| 性欧美长视频免费观看不卡| 98精品国产高清在线xxxx天堂| 国产精品一区二区av影院萌芽| 欧美激情综合色综合啪啪五月| 亚洲最大av网| 欧美视频在线观看 亚洲欧| 精品成人国产在线观看男人呻吟| 久久国产精品电影| 97超级碰碰碰| 日韩av手机在线观看| 2019亚洲男人天堂| 欧美另类老女人| 一区二区三区无码高清视频| 奇门遁甲1982国语版免费观看高清| 精品久久久久久久大神国产| 亚洲激情在线观看| 亚洲成人黄色网| 欧美电影免费观看电视剧大全| 91精品国产91久久久久| 精品国产网站地址| 日韩美女视频免费看| 久久国产精品久久久| 国产在线视频2019最新视频| 日韩专区在线播放| 欧美另类xxx| 欧美激情xxxx性bbbb| 国产精品99久久久久久久久久久久| 精品在线小视频| 欧美激情a∨在线视频播放| 55夜色66夜色国产精品视频| 亚洲国产中文字幕久久网| 欧美老女人性生活| 91在线免费视频| 国产欧美中文字幕| 国产日本欧美一区| 欧美激情一区二区三区在线视频观看| 欧洲美女7788成人免费视频| 成人在线视频网站| xxx成人少妇69| 国产丝袜一区二区三区| 亚洲国产精品一区二区久| 亚洲精品久久久一区二区三区| 97视频在线看| 丝袜情趣国产精品| 亚洲国产精品系列| 日韩欧美在线视频免费观看| 国产精品一香蕉国产线看观看| 国产精品欧美亚洲777777| 亚洲а∨天堂久久精品喷水| 黑人与娇小精品av专区| 日韩欧美中文在线| 国产精品久久久精品| 最新69国产成人精品视频免费| 日韩激情片免费| 欧美一级视频一区二区| 伊人伊人伊人久久| 久久久久成人精品| 成人免费看片视频| 欧美丝袜一区二区三区| 成人综合国产精品| 久久激情视频免费观看| 日韩在线不卡视频| 欧美激情视频免费观看| 国产精品福利网| 国产精品爽黄69天堂a| 日本欧美黄网站| 91精品视频在线免费观看| 欧美日韩亚洲一区二| 国产亚洲视频在线观看| 国产精品自产拍在线观看| 久久久免费在线观看| 亚洲欧美日韩国产精品| 欧美性高潮床叫视频| 亚洲网站在线观看| 国产亚洲精品久久久久久777| 欧美老妇交乱视频| 8050国产精品久久久久久| 日本在线观看天堂男亚洲| 91最新国产视频| 日韩电影第一页| 性夜试看影院91社区| 欧美视频在线免费| 国产精品久久久久7777婷婷| 黑人精品xxx一区| 国产一区二中文字幕在线看| 欧美日韩激情视频8区| 欧美又大又硬又粗bbbbb| 成人日韩av在线| 欧美乱人伦中文字幕在线| 国产精品主播视频| 久久久亚洲网站| 国产精品一区二区久久国产| 久久色精品视频| 欧美影院久久久| 亚洲奶大毛多的老太婆| 最近免费中文字幕视频2019| 91九色在线视频| 九九热精品视频| 久久资源免费视频| 精品毛片三在线观看| 92版电视剧仙鹤神针在线观看| 国产精品久久激情| 国产精品精品久久久| 性金发美女69hd大尺寸| 久久精品电影网站| 国产精品亚洲аv天堂网| 国产91在线视频| 国产福利视频一区| 亚洲国产成人久久综合| 日韩欧亚中文在线| 久久人人看视频| 色综合天天综合网国产成人网| 国产精品自拍偷拍| 亚洲区中文字幕| 欧美性69xxxx肥| 欧美福利视频网站| 91在线精品播放| 91久久久久久久| 97久久伊人激情网| 久久久久久这里只有精品| 亚洲欧美一区二区激情| 欧美大片va欧美在线播放| 久久久亚洲福利精品午夜| 国产极品精品在线观看| 精品欧美一区二区三区| 欧美剧在线观看| 日韩精品视频在线免费观看| 亚洲美女www午夜| 国产一区二区精品丝袜| 亚洲美女性生活视频| 中文字幕无线精品亚洲乱码一区| 国内精品视频久久| 午夜精品久久久久久久99热浪潮| 欧美不卡视频一区发布| 免费av在线一区| 欧美性猛交xxxx富婆| 日韩欧美成人网| 亚洲成人a级网|